@fremtind/jokul 5.0.0-next.0 → 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 (739) hide show
  1. package/README.md +42 -23
  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/beta/description-list/DescriptionList.cjs +2 -0
  6. package/build/cjs/components/beta/description-list/DescriptionList.cjs.map +1 -0
  7. package/build/cjs/components/beta/description-list/DescriptionListItem.cjs +2 -0
  8. package/build/cjs/components/beta/description-list/DescriptionListItem.cjs.map +1 -0
  9. package/build/cjs/{components-beta → components/beta}/description-list/index.d.cts +2 -2
  10. package/build/cjs/components/beta/nav-link/NavLink.cjs +2 -0
  11. package/build/cjs/components/beta/nav-link/NavLink.cjs.map +1 -0
  12. package/build/cjs/components/beta/nav-link/index.d.cts +1 -0
  13. package/build/cjs/{components-beta → components/beta}/nav-link/types.d.cts +1 -1
  14. package/build/cjs/components/beta/select/Select.cjs +2 -0
  15. package/build/cjs/components/beta/select/Select.cjs.map +1 -0
  16. package/build/cjs/components/beta/select/index.d.cts +2 -0
  17. package/build/cjs/{components-beta → components/beta}/select/types.d.cts +1 -1
  18. package/build/cjs/components/breadcrumb/types.d.cts +1 -1
  19. package/build/cjs/components/card/Card.cjs +1 -1
  20. package/build/cjs/components/card/Card.cjs.map +1 -1
  21. package/build/cjs/components/card/index.d.cts +1 -1
  22. package/build/cjs/components/card/types.cjs +1 -1
  23. package/build/cjs/components/card/types.cjs.map +1 -1
  24. package/build/cjs/components/card/types.d.cts +3 -6
  25. package/build/cjs/components/checkbox/Checkbox.cjs +1 -1
  26. package/build/cjs/components/checkbox/Checkbox.cjs.map +1 -1
  27. package/build/cjs/components/checkbox/types.d.cts +1 -1
  28. package/build/cjs/components/cookie-consent/CookieConsent.cjs +1 -1
  29. package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
  30. package/build/cjs/components/cookie-consent/CookieConsent.d.cts +1 -1
  31. package/build/cjs/components/cookie-consent/types.d.cts +5 -1
  32. package/build/cjs/components/datepicker/DatePicker.cjs +1 -1
  33. package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
  34. package/build/cjs/components/datepicker/types.d.cts +1 -1
  35. package/build/cjs/components/description-list/index.cjs +1 -1
  36. package/build/cjs/components/description-list/index.d.cts +3 -3
  37. package/build/cjs/components/description-list/types.d.cts +1 -1
  38. package/build/cjs/components/expander/ExpandablePanel.cjs +1 -1
  39. package/build/cjs/components/expander/ExpandablePanel.cjs.map +1 -1
  40. package/build/cjs/components/feedback/feedbackContext.cjs.map +1 -1
  41. package/build/cjs/components/feedback/feedbackContext.d.cts +1 -1
  42. package/build/cjs/components/feedback/followup/followupContext.cjs.map +1 -1
  43. package/build/cjs/components/feedback/followup/followupContext.d.cts +1 -1
  44. package/build/cjs/components/feedback/main-question/mainQuestionContext.cjs.map +1 -1
  45. package/build/cjs/components/feedback/main-question/mainQuestionContext.d.cts +1 -1
  46. package/build/cjs/components/feedback/questions/smileyUtils.cjs.map +1 -1
  47. package/build/cjs/components/file-input/internal/Dropzone.cjs.map +1 -1
  48. package/build/cjs/components/file-input/internal/Dropzone.d.cts +1 -1
  49. package/build/cjs/components/file-input/internal/fileInputContext.cjs.map +1 -1
  50. package/build/cjs/components/file-input/internal/fileInputContext.d.cts +1 -1
  51. package/build/cjs/components/icon/development/internal/IconsExampleGrid.d.cts +1 -1
  52. package/build/cjs/components/input-group/InputGroup.d.cts +2 -2
  53. package/build/cjs/components/input-group/types.d.cts +1 -1
  54. package/build/cjs/components/link/Link.cjs +1 -1
  55. package/build/cjs/components/link/Link.cjs.map +1 -1
  56. package/build/cjs/components/link/Link.d.cts +2 -2
  57. package/build/cjs/components/link/types.d.cts +1 -4
  58. package/build/cjs/components/link-list/LinkList.d.cts +1 -1
  59. package/build/cjs/components/list/ListItem.cjs.map +1 -1
  60. package/build/cjs/components/list/ListItem.d.cts +1 -1
  61. package/build/cjs/components/logo/types.d.cts +1 -1
  62. package/build/cjs/components/menu/types.d.cts +1 -1
  63. package/build/cjs/components/modal/Modal.cjs +1 -1
  64. package/build/cjs/components/modal/Modal.cjs.map +1 -1
  65. package/build/cjs/components/modal/Modal.d.cts +2 -9
  66. package/build/cjs/components/modal/index.d.cts +1 -1
  67. package/build/cjs/components/modal/types.d.cts +19 -1
  68. package/build/cjs/components/nav-link/index.cjs +1 -1
  69. package/build/cjs/components/nav-link/index.d.cts +2 -2
  70. package/build/cjs/components/popover/Popover.cjs +1 -1
  71. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  72. package/build/cjs/components/radio-button/BaseRadioButton.cjs +1 -1
  73. package/build/cjs/components/radio-button/BaseRadioButton.cjs.map +1 -1
  74. package/build/cjs/components/radio-button/radioGroupContext.cjs.map +1 -1
  75. package/build/cjs/components/radio-button/radioGroupContext.d.cts +1 -1
  76. package/build/cjs/components/screen-reader-only/types.d.cts +1 -1
  77. package/build/cjs/components/select/index.cjs +1 -1
  78. package/build/cjs/components/select/index.d.cts +2 -2
  79. package/build/cjs/components/select/types.d.cts +1 -1
  80. package/build/cjs/components/system-message/types.d.cts +1 -1
  81. package/build/cjs/components/table/types.d.cts +1 -1
  82. package/build/cjs/components/table-of-contents/TableOfContents.d.cts +1 -1
  83. package/build/cjs/components/tabs/types.d.cts +1 -1
  84. package/build/cjs/components/text-area/BaseTextArea.cjs +1 -1
  85. package/build/cjs/components/text-area/BaseTextArea.cjs.map +1 -1
  86. package/build/cjs/components/text-area/counter.cjs +2 -0
  87. package/build/cjs/components/text-area/counter.cjs.map +1 -0
  88. package/build/cjs/components/text-area/counter.d.cts +2 -0
  89. package/build/cjs/components/text-area/types.d.cts +21 -1
  90. package/build/cjs/components/toast/types.d.cts +1 -1
  91. package/build/cjs/components/toggle-switch/types.d.cts +1 -1
  92. package/build/cjs/components/tooltip/Tooltip.cjs.map +1 -1
  93. package/build/cjs/components/tooltip/Tooltip.d.cts +1 -1
  94. package/build/cjs/components/typography/Text.cjs +2 -0
  95. package/build/cjs/components/typography/Text.cjs.map +1 -0
  96. package/build/cjs/components/typography/Text.d.cts +5 -0
  97. package/build/cjs/components/typography/Title.cjs +2 -0
  98. package/build/cjs/components/typography/Title.cjs.map +1 -0
  99. package/build/cjs/components/typography/Title.d.cts +5 -0
  100. package/build/cjs/components/typography/index.cjs +2 -0
  101. package/build/cjs/components/typography/index.d.cts +3 -0
  102. package/build/cjs/components/typography/types.d.cts +48 -0
  103. package/build/cjs/hooks/useAnimatedHeight/types.d.cts +1 -1
  104. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs +1 -1
  105. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs.map +1 -1
  106. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs +1 -1
  107. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs.map +1 -1
  108. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs +1 -1
  109. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs.map +1 -1
  110. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.d.cts +1 -1
  111. package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.d.cts +1 -1
  112. package/build/cjs/hooks/useBrowserPreferences/useBrowserPreferences.cjs.map +1 -1
  113. package/build/cjs/hooks/useBrowserPreferences/useBrowserPreferences.d.cts +1 -1
  114. package/build/cjs/hooks/useScreen/useScreen.cjs +1 -1
  115. package/build/cjs/hooks/useScreen/useScreen.cjs.map +1 -1
  116. package/build/cjs/tailwind/plugins/jokulTypographyPlugin.cjs +1 -1
  117. package/build/cjs/tailwind/plugins/jokulTypographyPlugin.cjs.map +1 -1
  118. package/build/cjs/tailwind/tailwindPreset.cjs +1 -1
  119. package/build/cjs/tailwind/tailwindPreset.cjs.map +1 -1
  120. package/build/cjs/tokens.cjs +2 -0
  121. package/build/cjs/tokens.cjs.map +1 -0
  122. package/build/cjs/tokens.d.cts +228 -0
  123. package/build/cjs/utilities/getThemeAndSize.cjs +1 -1
  124. package/build/cjs/utilities/getThemeAndSize.cjs.map +1 -1
  125. package/build/cjs/utilities/getThemeAndSize.d.cts +1 -1
  126. package/build/cjs/utilities/index.d.cts +1 -0
  127. package/build/cjs/utilities/types.cjs +2 -0
  128. package/build/cjs/utilities/types.cjs.map +1 -0
  129. package/build/cjs/{core → utilities}/types.d.cts +1 -1
  130. package/build/es/components/beta/description-list/DescriptionList.js +2 -0
  131. package/build/es/components/beta/description-list/DescriptionList.js.map +1 -0
  132. package/build/es/components/beta/description-list/DescriptionListItem.js +2 -0
  133. package/build/es/components/beta/description-list/DescriptionListItem.js.map +1 -0
  134. package/build/es/{components-beta → components/beta}/description-list/index.d.ts +2 -2
  135. package/build/es/components/beta/nav-link/NavLink.js +2 -0
  136. package/build/es/components/beta/nav-link/NavLink.js.map +1 -0
  137. package/build/es/components/beta/nav-link/index.d.ts +1 -0
  138. package/build/es/{components-beta → components/beta}/nav-link/types.d.ts +1 -1
  139. package/build/es/components/beta/select/Select.js +2 -0
  140. package/build/es/components/beta/select/Select.js.map +1 -0
  141. package/build/es/components/beta/select/index.d.ts +2 -0
  142. package/build/es/{components-beta → components/beta}/select/types.d.ts +1 -1
  143. package/build/es/components/breadcrumb/types.d.ts +1 -1
  144. package/build/es/components/card/Card.js +1 -1
  145. package/build/es/components/card/Card.js.map +1 -1
  146. package/build/es/components/card/index.d.ts +1 -1
  147. package/build/es/components/card/types.d.ts +3 -6
  148. package/build/es/components/card/types.js +1 -1
  149. package/build/es/components/card/types.js.map +1 -1
  150. package/build/es/components/checkbox/Checkbox.js +1 -1
  151. package/build/es/components/checkbox/Checkbox.js.map +1 -1
  152. package/build/es/components/checkbox/types.d.ts +1 -1
  153. package/build/es/components/cookie-consent/CookieConsent.d.ts +1 -1
  154. package/build/es/components/cookie-consent/CookieConsent.js +1 -1
  155. package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
  156. package/build/es/components/cookie-consent/types.d.ts +5 -1
  157. package/build/es/components/datepicker/DatePicker.js +1 -1
  158. package/build/es/components/datepicker/DatePicker.js.map +1 -1
  159. package/build/es/components/datepicker/types.d.ts +1 -1
  160. package/build/es/components/description-list/index.d.ts +3 -3
  161. package/build/es/components/description-list/index.js +1 -1
  162. package/build/es/components/description-list/types.d.ts +1 -1
  163. package/build/es/components/expander/ExpandablePanel.js +1 -1
  164. package/build/es/components/expander/ExpandablePanel.js.map +1 -1
  165. package/build/es/components/feedback/feedbackContext.d.ts +1 -1
  166. package/build/es/components/feedback/feedbackContext.js.map +1 -1
  167. package/build/es/components/feedback/followup/followupContext.d.ts +1 -1
  168. package/build/es/components/feedback/followup/followupContext.js.map +1 -1
  169. package/build/es/components/feedback/main-question/mainQuestionContext.d.ts +1 -1
  170. package/build/es/components/feedback/main-question/mainQuestionContext.js.map +1 -1
  171. package/build/es/components/feedback/questions/smileyUtils.js.map +1 -1
  172. package/build/es/components/file-input/internal/Dropzone.d.ts +1 -1
  173. package/build/es/components/file-input/internal/Dropzone.js.map +1 -1
  174. package/build/es/components/file-input/internal/fileInputContext.d.ts +1 -1
  175. package/build/es/components/file-input/internal/fileInputContext.js.map +1 -1
  176. package/build/es/components/icon/development/internal/IconsExampleGrid.d.ts +1 -1
  177. package/build/es/components/input-group/InputGroup.d.ts +2 -2
  178. package/build/es/components/input-group/types.d.ts +1 -1
  179. package/build/es/components/link/Link.d.ts +2 -2
  180. package/build/es/components/link/Link.js +1 -1
  181. package/build/es/components/link/Link.js.map +1 -1
  182. package/build/es/components/link/types.d.ts +1 -4
  183. package/build/es/components/link-list/LinkList.d.ts +1 -1
  184. package/build/es/components/list/ListItem.d.ts +1 -1
  185. package/build/es/components/list/ListItem.js.map +1 -1
  186. package/build/es/components/logo/types.d.ts +1 -1
  187. package/build/es/components/menu/types.d.ts +1 -1
  188. package/build/es/components/modal/Modal.d.ts +2 -9
  189. package/build/es/components/modal/Modal.js +1 -1
  190. package/build/es/components/modal/Modal.js.map +1 -1
  191. package/build/es/components/modal/index.d.ts +1 -1
  192. package/build/es/components/modal/types.d.ts +19 -1
  193. package/build/es/components/nav-link/index.d.ts +2 -2
  194. package/build/es/components/nav-link/index.js +1 -1
  195. package/build/es/components/popover/Popover.js +1 -1
  196. package/build/es/components/popover/Popover.js.map +1 -1
  197. package/build/es/components/radio-button/BaseRadioButton.js +1 -1
  198. package/build/es/components/radio-button/BaseRadioButton.js.map +1 -1
  199. package/build/es/components/radio-button/radioGroupContext.d.ts +1 -1
  200. package/build/es/components/radio-button/radioGroupContext.js.map +1 -1
  201. package/build/es/components/screen-reader-only/types.d.ts +1 -1
  202. package/build/es/components/select/index.d.ts +2 -2
  203. package/build/es/components/select/index.js +1 -1
  204. package/build/es/components/select/types.d.ts +1 -1
  205. package/build/es/components/system-message/types.d.ts +1 -1
  206. package/build/es/components/table/types.d.ts +1 -1
  207. package/build/es/components/table-of-contents/TableOfContents.d.ts +1 -1
  208. package/build/es/components/tabs/types.d.ts +1 -1
  209. package/build/es/components/text-area/BaseTextArea.js +1 -1
  210. package/build/es/components/text-area/BaseTextArea.js.map +1 -1
  211. package/build/es/components/text-area/counter.d.ts +2 -0
  212. package/build/es/components/text-area/counter.js +2 -0
  213. package/build/es/components/text-area/counter.js.map +1 -0
  214. package/build/es/components/text-area/types.d.ts +21 -1
  215. package/build/es/components/toast/types.d.ts +1 -1
  216. package/build/es/components/toggle-switch/types.d.ts +1 -1
  217. package/build/es/components/tooltip/Tooltip.d.ts +1 -1
  218. package/build/es/components/tooltip/Tooltip.js.map +1 -1
  219. package/build/es/components/typography/Text.d.ts +5 -0
  220. package/build/es/components/typography/Text.js +2 -0
  221. package/build/es/components/typography/Text.js.map +1 -0
  222. package/build/es/components/typography/Title.d.ts +5 -0
  223. package/build/es/components/typography/Title.js +2 -0
  224. package/build/es/components/typography/Title.js.map +1 -0
  225. package/build/es/components/typography/index.d.ts +3 -0
  226. package/build/es/components/typography/index.js +2 -0
  227. package/build/es/components/typography/types.d.ts +48 -0
  228. package/build/es/hooks/useAnimatedHeight/types.d.ts +1 -1
  229. package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js +1 -1
  230. package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js.map +1 -1
  231. package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js +1 -1
  232. package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -1
  233. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.d.ts +1 -1
  234. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js +1 -1
  235. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -1
  236. package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.d.ts +1 -1
  237. package/build/es/hooks/useBrowserPreferences/useBrowserPreferences.d.ts +1 -1
  238. package/build/es/hooks/useBrowserPreferences/useBrowserPreferences.js.map +1 -1
  239. package/build/es/hooks/useScreen/useScreen.js +1 -1
  240. package/build/es/hooks/useScreen/useScreen.js.map +1 -1
  241. package/build/es/tailwind/plugins/jokulTypographyPlugin.js +1 -1
  242. package/build/es/tailwind/plugins/jokulTypographyPlugin.js.map +1 -1
  243. package/build/es/tailwind/tailwindPreset.js +1 -1
  244. package/build/es/tailwind/tailwindPreset.js.map +1 -1
  245. package/build/es/tokens.d.ts +228 -0
  246. package/build/es/tokens.js +2 -0
  247. package/build/es/tokens.js.map +1 -0
  248. package/build/es/utilities/getThemeAndSize.d.ts +1 -1
  249. package/build/es/utilities/getThemeAndSize.js +1 -1
  250. package/build/es/utilities/getThemeAndSize.js.map +1 -1
  251. package/build/es/utilities/index.d.ts +1 -0
  252. package/build/es/{core → utilities}/types.d.ts +1 -1
  253. package/build/es/utilities/types.js +2 -0
  254. package/build/es/utilities/types.js.map +1 -0
  255. package/codemods/__tests__/import-paths.test.mjs +273 -0
  256. package/codemods/import-paths.mjs +527 -0
  257. package/package.json +13 -585
  258. package/src/fonts/InterVariable-Italic.woff2 +0 -0
  259. package/src/fonts/InterVariable.woff2 +0 -0
  260. package/src/fonts/brands/dnb/DNB-Bold.woff2 +0 -0
  261. package/src/fonts/brands/dnb/DNB-Medium.woff2 +0 -0
  262. package/src/fonts/brands/dnb/DNB-Regular.woff2 +0 -0
  263. package/src/fonts/brands/dnb/DNBMono-Regular.woff2 +0 -0
  264. package/src/fonts/brands/eika/OpenSans-Bold.woff2 +0 -0
  265. package/src/fonts/brands/eika/OpenSans-Light.woff2 +0 -0
  266. package/src/fonts/brands/eika/OpenSans-Regular.woff2 +0 -0
  267. package/src/fonts/brands/eika/OpenSans-SemiBold.woff2 +0 -0
  268. package/src/fonts/brands/fremtind/Fremtind-Material-Symbols.woff2 +0 -0
  269. package/src/fonts/brands/fremtind/InterVariable-Italic.woff2 +0 -0
  270. package/src/fonts/brands/fremtind/InterVariable.woff2 +0 -0
  271. package/src/fonts/brands/sparebank1/SpareBank1-Medium-Web.woff2 +0 -0
  272. package/src/fonts/brands/sparebank1/SpareBank1-Regular-Web.woff2 +0 -0
  273. package/src/fonts/brands/sparebank1/SpareBank1-Title-Medium-Web.woff2 +0 -0
  274. package/styles/base.css +2024 -0
  275. package/styles/base.min.css +2 -0
  276. package/styles/components/autosuggest/autosuggest.css +8 -14
  277. package/styles/components/autosuggest/autosuggest.min.css +1 -1
  278. package/styles/components/autosuggest/autosuggest.scss +5 -5
  279. package/styles/{components-beta → components/beta}/description-list/description-list.css +1 -1
  280. package/styles/{components-beta → components/beta}/description-list/description-list.min.css +1 -1
  281. package/styles/{components-beta → components/beta}/description-list/description-list.scss +2 -2
  282. package/styles/{components-beta → components/beta}/nav-link/navlink.css +13 -16
  283. package/styles/components/beta/nav-link/navlink.min.css +1 -0
  284. package/styles/{components-beta → components/beta}/nav-link/navlink.scss +8 -6
  285. package/styles/components/beta/select/_index.scss +3 -0
  286. package/styles/{components-beta → components/beta}/select/select.css +13 -16
  287. package/styles/components/beta/select/select.min.css +1 -0
  288. package/styles/{components-beta → components/beta}/select/select.scss +9 -9
  289. package/styles/components/breadcrumb/breadcrumb.css +1 -1
  290. package/styles/components/breadcrumb/breadcrumb.min.css +1 -1
  291. package/styles/components/breadcrumb/breadcrumb.scss +1 -1
  292. package/styles/components/button/button.css +17 -16
  293. package/styles/components/button/button.min.css +1 -1
  294. package/styles/components/button/button.scss +16 -16
  295. package/styles/components/card/card.css +8 -13
  296. package/styles/components/card/card.min.css +1 -1
  297. package/styles/components/card/card.scss +6 -13
  298. package/styles/components/checkbox/checkbox.css +51 -44
  299. package/styles/components/checkbox/checkbox.min.css +1 -1
  300. package/styles/components/checkbox/checkbox.scss +36 -35
  301. package/styles/components/checkbox-panel/checkbox-panel.css +80 -74
  302. package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
  303. package/styles/components/checkbox-panel/checkbox-panel.scss +5 -1
  304. package/styles/components/checkbox-panel/development/styles.scss +1 -1
  305. package/styles/components/chip/chip.css +10 -13
  306. package/styles/components/chip/chip.min.css +1 -1
  307. package/styles/components/chip/chip.scss +8 -8
  308. package/styles/components/combobox/combobox.css +37 -47
  309. package/styles/components/combobox/combobox.min.css +1 -1
  310. package/styles/components/combobox/combobox.scss +16 -20
  311. package/styles/components/cookie-consent/cookie-consent.css +1 -5
  312. package/styles/components/cookie-consent/cookie-consent.min.css +1 -1
  313. package/styles/components/cookie-consent/cookie-consent.scss +1 -1
  314. package/styles/components/countdown/countdown.css +4 -4
  315. package/styles/components/countdown/countdown.min.css +1 -1
  316. package/styles/components/datepicker/_calendar-date-button.scss +13 -11
  317. package/styles/components/datepicker/_calendar-navigation-dropdown.scss +3 -3
  318. package/styles/components/datepicker/_calendar-navigation.scss +1 -1
  319. package/styles/components/datepicker/_calendar-table.scss +1 -1
  320. package/styles/components/datepicker/_calendar.scss +7 -8
  321. package/styles/components/datepicker/datepicker.css +28 -32
  322. package/styles/components/datepicker/datepicker.min.css +1 -1
  323. package/styles/components/datepicker/datepicker.scss +1 -1
  324. package/styles/components/description-list/description-list.css +2 -2
  325. package/styles/components/description-list/description-list.min.css +1 -1
  326. package/styles/components/description-list/description-list.scss +3 -3
  327. package/styles/components/expander/expandable.css +24 -21
  328. package/styles/components/expander/expandable.min.css +1 -1
  329. package/styles/components/expander/expandable.scss +21 -21
  330. package/styles/components/feedback/_index.scss +1 -1
  331. package/styles/components/feedback/feedback.css +14 -20
  332. package/styles/components/feedback/feedback.min.css +1 -1
  333. package/styles/components/feedback/feedback.scss +5 -10
  334. package/styles/components/file/file.css +10 -18
  335. package/styles/components/file/file.min.css +1 -1
  336. package/styles/components/file/file.scss +7 -7
  337. package/styles/components/file-input/file-input.css +55 -73
  338. package/styles/components/file-input/file-input.min.css +1 -1
  339. package/styles/components/file-input/file-input.scss +4 -4
  340. package/styles/components/help/help.css +2 -2
  341. package/styles/components/help/help.min.css +1 -1
  342. package/styles/components/help/help.scss +5 -5
  343. package/styles/components/icon/_base-styles.scss +13 -17
  344. package/styles/components/icon/icon.css +14 -35
  345. package/styles/components/icon/icon.min.css +1 -1
  346. package/styles/components/icon/icon.scss +74 -88
  347. package/styles/components/icon-button/icon-button.css +4 -4
  348. package/styles/components/icon-button/icon-button.min.css +1 -1
  349. package/styles/components/icon-button/icon-button.scss +2 -2
  350. package/styles/components/image/image.css +2 -2
  351. package/styles/components/image/image.min.css +1 -1
  352. package/styles/components/image/image.scss +1 -1
  353. package/styles/components/input-group/_field-group.scss +1 -1
  354. package/styles/components/input-group/_labels.scss +1 -1
  355. package/styles/components/input-group/input-group.css +12 -27
  356. package/styles/components/input-group/input-group.min.css +1 -1
  357. package/styles/components/input-group/input-group.scss +1 -1
  358. package/styles/components/input-panel/input-panel.css +26 -30
  359. package/styles/components/input-panel/input-panel.min.css +1 -1
  360. package/styles/components/input-panel/input-panel.scss +23 -22
  361. package/styles/components/link/link.css +8 -9
  362. package/styles/components/link/link.min.css +1 -1
  363. package/styles/components/link/link.scss +1 -2
  364. package/styles/components/link-list/link-list.css +19 -25
  365. package/styles/components/link-list/link-list.min.css +1 -1
  366. package/styles/components/link-list/link-list.scss +8 -4
  367. package/styles/components/list/list.css +6 -27
  368. package/styles/components/list/list.min.css +1 -1
  369. package/styles/components/list/list.scss +11 -15
  370. package/styles/components/loader/loader.css +6 -6
  371. package/styles/components/loader/loader.min.css +1 -1
  372. package/styles/components/loader/loader.scss +1 -1
  373. package/styles/components/loader/skeleton-loader.css +4 -4
  374. package/styles/components/loader/skeleton-loader.min.css +1 -1
  375. package/styles/components/loader/skeleton-loader.scss +2 -2
  376. package/styles/components/logo/logo.css +4 -4
  377. package/styles/components/logo/logo.min.css +1 -1
  378. package/styles/components/logo/logo.scss +1 -1
  379. package/styles/components/menu/_menu-divider.scss +2 -2
  380. package/styles/components/menu/_menu-item.scss +3 -3
  381. package/styles/components/menu/menu.css +10 -25
  382. package/styles/components/menu/menu.min.css +1 -1
  383. package/styles/components/menu/menu.scss +8 -12
  384. package/styles/components/message/message.css +26 -28
  385. package/styles/components/message/message.min.css +1 -1
  386. package/styles/components/message/message.scss +20 -13
  387. package/styles/components/modal/_layout.scss +22 -0
  388. package/styles/components/modal/_modal-base.scss +32 -0
  389. package/styles/components/modal/_motion.scss +45 -0
  390. package/styles/components/modal/_overlay.scss +20 -0
  391. package/styles/components/modal/_parts.scss +33 -0
  392. package/styles/components/modal/_placement.scss +59 -0
  393. package/styles/components/modal/modal.css +120 -42
  394. package/styles/components/modal/modal.min.css +1 -1
  395. package/styles/components/modal/modal.scss +6 -95
  396. package/styles/components/nav-link/nav-link.css +5 -5
  397. package/styles/components/nav-link/nav-link.min.css +1 -1
  398. package/styles/components/nav-link/nav-link.scss +2 -2
  399. package/styles/components/pagination/development/styles.scss +1 -1
  400. package/styles/components/pagination/pagination.css +4 -4
  401. package/styles/components/pagination/pagination.min.css +1 -1
  402. package/styles/components/pagination/pagination.scss +3 -3
  403. package/styles/components/popover/popover.css +17 -18
  404. package/styles/components/popover/popover.min.css +1 -1
  405. package/styles/components/popover/popover.scss +21 -11
  406. package/styles/components/progress-bar/progress-bar.css +29 -5
  407. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  408. package/styles/components/progress-bar/progress-bar.scss +6 -1
  409. package/styles/components/radio-button/radio-button.css +55 -38
  410. package/styles/components/radio-button/radio-button.min.css +1 -1
  411. package/styles/components/radio-button/radio-button.scss +40 -31
  412. package/styles/components/radio-panel/development/styles.scss +1 -1
  413. package/styles/components/radio-panel/radio-panel.css +29 -30
  414. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  415. package/styles/components/radio-panel/radio-panel.scss +5 -1
  416. package/styles/components/search/search-with-submit-button.css +3 -3
  417. package/styles/components/search/search-with-submit-button.min.css +1 -1
  418. package/styles/components/search/search-with-submit-button.scss +2 -2
  419. package/styles/components/search/search.css +12 -18
  420. package/styles/components/search/search.min.css +1 -1
  421. package/styles/components/search/search.scss +4 -4
  422. package/styles/components/segmented-control/segmented-control.css +98 -121
  423. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  424. package/styles/components/segmented-control/segmented-control.scss +8 -8
  425. package/styles/components/select/select.css +29 -39
  426. package/styles/components/select/select.min.css +1 -1
  427. package/styles/components/select/select.scss +25 -31
  428. package/styles/components/summary-table/development/summary-table-example.scss +1 -1
  429. package/styles/components/summary-table/summary-table.css +5 -8
  430. package/styles/components/summary-table/summary-table.min.css +1 -1
  431. package/styles/components/summary-table/summary-table.scss +5 -5
  432. package/styles/components/system-message/system-message.css +25 -18
  433. package/styles/components/system-message/system-message.min.css +1 -1
  434. package/styles/components/system-message/system-message.scss +120 -110
  435. package/styles/components/table/_table-caption.scss +1 -1
  436. package/styles/components/table/_table-cell.scss +1 -1
  437. package/styles/components/table/_table-head.scss +3 -13
  438. package/styles/components/table/_table-header.scss +4 -4
  439. package/styles/components/table/_table-pagination.scss +1 -1
  440. package/styles/components/table/_table-row.scss +6 -4
  441. package/styles/components/table/table.css +23 -49
  442. package/styles/components/table/table.min.css +1 -1
  443. package/styles/components/table/table.scss +1 -1
  444. package/styles/components/table-of-contents/table-of-contents.css +5 -9
  445. package/styles/components/table-of-contents/table-of-contents.min.css +1 -1
  446. package/styles/components/table-of-contents/table-of-contents.scss +4 -4
  447. package/styles/components/tabs/tabs.css +11 -14
  448. package/styles/components/tabs/tabs.min.css +1 -1
  449. package/styles/components/tabs/tabs.scss +6 -7
  450. package/styles/components/tag/tag.css +18 -11
  451. package/styles/components/tag/tag.min.css +1 -1
  452. package/styles/components/tag/tag.scss +20 -9
  453. package/styles/components/text-area/text-area.css +21 -30
  454. package/styles/components/text-area/text-area.min.css +1 -1
  455. package/styles/components/text-area/text-area.scss +1 -1
  456. package/styles/components/text-input/text-input.css +16 -22
  457. package/styles/components/text-input/text-input.min.css +1 -1
  458. package/styles/components/text-input/text-input.scss +2 -3
  459. package/styles/components/toast/toast.css +22 -21
  460. package/styles/components/toast/toast.min.css +1 -1
  461. package/styles/components/toast/toast.scss +20 -20
  462. package/styles/components/toggle-switch/_toggle-slider.scss +5 -5
  463. package/styles/components/toggle-switch/toggle-switch.css +22 -35
  464. package/styles/components/toggle-switch/toggle-switch.min.css +1 -3
  465. package/styles/components/toggle-switch/toggle-switch.scss +11 -23
  466. package/styles/components/tooltip/tooltip.css +9 -13
  467. package/styles/components/tooltip/tooltip.min.css +1 -1
  468. package/styles/components/tooltip/tooltip.scss +6 -6
  469. package/styles/components/typography/_index.scss +2 -0
  470. package/styles/components/typography/text.css +38 -0
  471. package/styles/components/typography/text.min.css +1 -0
  472. package/styles/components/typography/text.scss +54 -0
  473. package/styles/components/typography/title.css +55 -0
  474. package/styles/components/typography/title.min.css +1 -0
  475. package/styles/components/typography/title.scss +59 -0
  476. package/styles/{styles.css → components.css} +945 -939
  477. package/styles/components.min.css +1 -0
  478. package/styles/components.scss +53 -0
  479. package/styles/core/utility/_paragraphs.scss +11 -1
  480. package/styles/{core/global → global}/_base-class.scss +6 -4
  481. package/styles/hooks/stories/styles.scss +7 -9
  482. package/styles/{core/jkl/_theme.scss → jkl/_forced-colors.scss} +0 -49
  483. package/styles/{core/jkl → jkl}/_index.scss +3 -6
  484. package/styles/{core/jkl → jkl}/_motion.scss +8 -26
  485. package/styles/{core/jkl → jkl}/_ornaments.scss +1 -1
  486. package/styles/{core/jkl → jkl}/_reset.scss +2 -2
  487. package/styles/{core/jkl → jkl}/_spacing.scss +1 -6
  488. package/styles/jkl/_tokens.scss +380 -0
  489. package/styles/jkl/_typography.scss +95 -0
  490. package/styles/shared/input/shared-input-styles.scss +12 -16
  491. package/styles/shared/track/track.scss +3 -3
  492. package/styles/tailwind.css +215 -0
  493. package/styles/theme/_color-scheme.scss +131 -0
  494. package/styles/{core/theme → theme}/_dynamic-spacing.scss +7 -3
  495. package/styles/theme/_fonts.scss +97 -0
  496. package/styles/theme/_index.scss +9 -0
  497. package/styles/theme/_size.scss +53 -0
  498. package/styles/theme/_tokens.scss +94 -0
  499. package/styles/theme/brands/dnb/_color-scheme.scss +121 -0
  500. package/styles/theme/brands/dnb/_fonts.scss +46 -0
  501. package/styles/theme/brands/dnb/_index.scss +2 -0
  502. package/styles/theme/brands/eika/_color-scheme.scss +121 -0
  503. package/styles/theme/brands/eika/_fonts.scss +46 -0
  504. package/styles/theme/brands/eika/_index.scss +2 -0
  505. package/styles/theme/brands/fremtind/_color-scheme.scss +121 -0
  506. package/styles/theme/brands/fremtind/_fonts.scss +30 -0
  507. package/styles/theme/brands/fremtind/_index.scss +2 -0
  508. package/styles/theme/brands/sparebank1/_color-scheme.scss +121 -0
  509. package/styles/theme/brands/sparebank1/_fonts.scss +38 -0
  510. package/styles/theme/brands/sparebank1/_index.scss +2 -0
  511. package/styles/utility/_paragraphs.scss +24 -0
  512. package/styles/{core/utility → utility}/_spacing.scss +3 -2
  513. package/build/cjs/components-beta/description-list/DescriptionList.cjs +0 -2
  514. package/build/cjs/components-beta/description-list/DescriptionList.cjs.map +0 -1
  515. package/build/cjs/components-beta/description-list/DescriptionListItem.cjs +0 -2
  516. package/build/cjs/components-beta/description-list/DescriptionListItem.cjs.map +0 -1
  517. package/build/cjs/components-beta/nav-link/NavLink.cjs +0 -2
  518. package/build/cjs/components-beta/nav-link/NavLink.cjs.map +0 -1
  519. package/build/cjs/components-beta/nav-link/index.d.cts +0 -1
  520. package/build/cjs/components-beta/select/Select.cjs +0 -2
  521. package/build/cjs/components-beta/select/Select.cjs.map +0 -1
  522. package/build/cjs/components-beta/select/index.d.cts +0 -2
  523. package/build/cjs/core/index.cjs +0 -2
  524. package/build/cjs/core/index.d.cts +0 -2
  525. package/build/cjs/core/tokens/build-tailwind-4.cjs +0 -2
  526. package/build/cjs/core/tokens/build-tailwind-4.cjs.map +0 -1
  527. package/build/cjs/core/tokens/build-tailwind-4.d.cts +0 -1
  528. package/build/cjs/core/tokens/style-dictionary/build.cjs +0 -2
  529. package/build/cjs/core/tokens/style-dictionary/build.cjs.map +0 -1
  530. package/build/cjs/core/tokens/style-dictionary/build.d.cts +0 -0
  531. package/build/cjs/core/tokens/style-dictionary/config.cjs +0 -2
  532. package/build/cjs/core/tokens/style-dictionary/config.cjs.map +0 -1
  533. package/build/cjs/core/tokens/style-dictionary/config.d.cts +0 -4
  534. package/build/cjs/core/tokens/style-dictionary/filters/index.cjs +0 -2
  535. package/build/cjs/core/tokens/style-dictionary/filters/index.cjs.map +0 -1
  536. package/build/cjs/core/tokens/style-dictionary/filters/index.d.cts +0 -3
  537. package/build/cjs/core/tokens/style-dictionary/formats/css-dynamic-color-variables.cjs +0 -2
  538. package/build/cjs/core/tokens/style-dictionary/formats/css-dynamic-color-variables.cjs.map +0 -1
  539. package/build/cjs/core/tokens/style-dictionary/formats/css-dynamic-color-variables.d.cts +0 -3
  540. package/build/cjs/core/tokens/style-dictionary/formats/css-theme-variables.cjs +0 -2
  541. package/build/cjs/core/tokens/style-dictionary/formats/css-theme-variables.cjs.map +0 -1
  542. package/build/cjs/core/tokens/style-dictionary/formats/css-theme-variables.d.cts +0 -3
  543. package/build/cjs/core/tokens/style-dictionary/formats/index.cjs +0 -2
  544. package/build/cjs/core/tokens/style-dictionary/formats/index.cjs.map +0 -1
  545. package/build/cjs/core/tokens/style-dictionary/formats/index.d.cts +0 -6
  546. package/build/cjs/core/tokens/style-dictionary/formats/javascript-esm.cjs +0 -2
  547. package/build/cjs/core/tokens/style-dictionary/formats/javascript-esm.cjs.map +0 -1
  548. package/build/cjs/core/tokens/style-dictionary/formats/javascript-esm.d.cts +0 -3
  549. package/build/cjs/core/tokens/style-dictionary/formats/scss-theme-variables.cjs +0 -2
  550. package/build/cjs/core/tokens/style-dictionary/formats/scss-theme-variables.cjs.map +0 -1
  551. package/build/cjs/core/tokens/style-dictionary/formats/scss-theme-variables.d.cts +0 -3
  552. package/build/cjs/core/tokens/style-dictionary/formats/tailwindcss-colors.cjs +0 -2
  553. package/build/cjs/core/tokens/style-dictionary/formats/tailwindcss-colors.cjs.map +0 -1
  554. package/build/cjs/core/tokens/style-dictionary/formats/tailwindcss-colors.d.cts +0 -3
  555. package/build/cjs/core/tokens/style-dictionary/register.cjs +0 -2
  556. package/build/cjs/core/tokens/style-dictionary/register.cjs.map +0 -1
  557. package/build/cjs/core/tokens/style-dictionary/register.d.cts +0 -1
  558. package/build/cjs/core/tokens/style-dictionary/transforms/index.cjs +0 -2
  559. package/build/cjs/core/tokens/style-dictionary/transforms/index.cjs.map +0 -1
  560. package/build/cjs/core/tokens/style-dictionary/transforms/index.d.cts +0 -2
  561. package/build/cjs/core/tokens/style-dictionary/transforms/strip-light-dark.cjs +0 -2
  562. package/build/cjs/core/tokens/style-dictionary/transforms/strip-light-dark.cjs.map +0 -1
  563. package/build/cjs/core/tokens/style-dictionary/transforms/strip-light-dark.d.cts +0 -3
  564. package/build/cjs/core/tokens.cjs +0 -2
  565. package/build/cjs/core/tokens.cjs.map +0 -1
  566. package/build/cjs/core/tokens.d.cts +0 -593
  567. package/build/cjs/index.cjs +0 -2
  568. package/build/cjs/index.cjs.map +0 -1
  569. package/build/cjs/index.d.cts +0 -3
  570. package/build/cjs/tailwind/colors.cjs +0 -2
  571. package/build/cjs/tailwind/colors.cjs.map +0 -1
  572. package/build/cjs/tailwind/colors.d.cts +0 -39
  573. package/build/es/components-beta/description-list/DescriptionList.js +0 -2
  574. package/build/es/components-beta/description-list/DescriptionList.js.map +0 -1
  575. package/build/es/components-beta/description-list/DescriptionListItem.js +0 -2
  576. package/build/es/components-beta/description-list/DescriptionListItem.js.map +0 -1
  577. package/build/es/components-beta/nav-link/NavLink.js +0 -2
  578. package/build/es/components-beta/nav-link/NavLink.js.map +0 -1
  579. package/build/es/components-beta/nav-link/index.d.ts +0 -1
  580. package/build/es/components-beta/select/Select.js +0 -2
  581. package/build/es/components-beta/select/Select.js.map +0 -1
  582. package/build/es/components-beta/select/index.d.ts +0 -2
  583. package/build/es/core/index.d.ts +0 -2
  584. package/build/es/core/index.js +0 -2
  585. package/build/es/core/tokens/build-tailwind-4.d.ts +0 -1
  586. package/build/es/core/tokens/build-tailwind-4.js +0 -2
  587. package/build/es/core/tokens/build-tailwind-4.js.map +0 -1
  588. package/build/es/core/tokens/style-dictionary/build.d.ts +0 -0
  589. package/build/es/core/tokens/style-dictionary/build.js +0 -2
  590. package/build/es/core/tokens/style-dictionary/build.js.map +0 -1
  591. package/build/es/core/tokens/style-dictionary/config.d.ts +0 -4
  592. package/build/es/core/tokens/style-dictionary/config.js +0 -2
  593. package/build/es/core/tokens/style-dictionary/config.js.map +0 -1
  594. package/build/es/core/tokens/style-dictionary/filters/index.d.ts +0 -3
  595. package/build/es/core/tokens/style-dictionary/filters/index.js +0 -2
  596. package/build/es/core/tokens/style-dictionary/filters/index.js.map +0 -1
  597. package/build/es/core/tokens/style-dictionary/formats/css-dynamic-color-variables.d.ts +0 -3
  598. package/build/es/core/tokens/style-dictionary/formats/css-dynamic-color-variables.js +0 -2
  599. package/build/es/core/tokens/style-dictionary/formats/css-dynamic-color-variables.js.map +0 -1
  600. package/build/es/core/tokens/style-dictionary/formats/css-theme-variables.d.ts +0 -3
  601. package/build/es/core/tokens/style-dictionary/formats/css-theme-variables.js +0 -2
  602. package/build/es/core/tokens/style-dictionary/formats/css-theme-variables.js.map +0 -1
  603. package/build/es/core/tokens/style-dictionary/formats/index.d.ts +0 -6
  604. package/build/es/core/tokens/style-dictionary/formats/index.js +0 -2
  605. package/build/es/core/tokens/style-dictionary/formats/index.js.map +0 -1
  606. package/build/es/core/tokens/style-dictionary/formats/javascript-esm.d.ts +0 -3
  607. package/build/es/core/tokens/style-dictionary/formats/javascript-esm.js +0 -2
  608. package/build/es/core/tokens/style-dictionary/formats/javascript-esm.js.map +0 -1
  609. package/build/es/core/tokens/style-dictionary/formats/scss-theme-variables.d.ts +0 -3
  610. package/build/es/core/tokens/style-dictionary/formats/scss-theme-variables.js +0 -2
  611. package/build/es/core/tokens/style-dictionary/formats/scss-theme-variables.js.map +0 -1
  612. package/build/es/core/tokens/style-dictionary/formats/tailwindcss-colors.d.ts +0 -3
  613. package/build/es/core/tokens/style-dictionary/formats/tailwindcss-colors.js +0 -2
  614. package/build/es/core/tokens/style-dictionary/formats/tailwindcss-colors.js.map +0 -1
  615. package/build/es/core/tokens/style-dictionary/register.d.ts +0 -1
  616. package/build/es/core/tokens/style-dictionary/register.js +0 -2
  617. package/build/es/core/tokens/style-dictionary/register.js.map +0 -1
  618. package/build/es/core/tokens/style-dictionary/transforms/index.d.ts +0 -2
  619. package/build/es/core/tokens/style-dictionary/transforms/index.js +0 -2
  620. package/build/es/core/tokens/style-dictionary/transforms/index.js.map +0 -1
  621. package/build/es/core/tokens/style-dictionary/transforms/strip-light-dark.d.ts +0 -3
  622. package/build/es/core/tokens/style-dictionary/transforms/strip-light-dark.js +0 -2
  623. package/build/es/core/tokens/style-dictionary/transforms/strip-light-dark.js.map +0 -1
  624. package/build/es/core/tokens.d.ts +0 -593
  625. package/build/es/core/tokens.js +0 -2
  626. package/build/es/core/tokens.js.map +0 -1
  627. package/build/es/index.d.ts +0 -3
  628. package/build/es/index.js +0 -2
  629. package/build/es/index.js.map +0 -1
  630. package/build/es/tailwind/colors.d.ts +0 -39
  631. package/build/es/tailwind/colors.js +0 -2
  632. package/build/es/tailwind/colors.js.map +0 -1
  633. package/build/index-Ck94bTpt.cjs +0 -2
  634. package/build/index-Ck94bTpt.cjs.map +0 -1
  635. package/build/index-DOHQmuhD.js +0 -2
  636. package/build/index-DOHQmuhD.js.map +0 -1
  637. package/src/fonts/FremtindGrotesk-Bold-Web.woff +0 -0
  638. package/src/fonts/FremtindGrotesk-Bold-Web.woff2 +0 -0
  639. package/src/fonts/FremtindGrotesk-BoldItalic-Web.woff +0 -0
  640. package/src/fonts/FremtindGrotesk-BoldItalic-Web.woff2 +0 -0
  641. package/src/fonts/FremtindGrotesk-Display-Web.woff +0 -0
  642. package/src/fonts/FremtindGrotesk-Display-Web.woff2 +0 -0
  643. package/src/fonts/FremtindGrotesk-Italic-Web.woff +0 -0
  644. package/src/fonts/FremtindGrotesk-Italic-Web.woff2 +0 -0
  645. package/src/fonts/FremtindGrotesk-Regular-Web.woff +0 -0
  646. package/src/fonts/FremtindGrotesk-Regular-Web.woff2 +0 -0
  647. package/src/fonts/FremtindGroteskMono-Regular-Web.woff +0 -0
  648. package/src/fonts/FremtindGroteskMono-Regular-Web.woff2 +0 -0
  649. package/src/fonts/styles/_index.scss +0 -1
  650. package/src/fonts/styles/webfonts.scss +0 -145
  651. package/src/tailwind/v4/jokul-tailwind.css +0 -266
  652. package/styles/components-beta/nav-link/navlink.min.css +0 -1
  653. package/styles/components-beta/select/_index.scss +0 -3
  654. package/styles/components-beta/select/select.min.css +0 -1
  655. package/styles/core/core.css +0 -1731
  656. package/styles/core/core.min.css +0 -2
  657. package/styles/core/jkl/_colors.scss +0 -26
  658. package/styles/core/jkl/_helpers.scss +0 -26
  659. package/styles/core/jkl/_tokens.scss +0 -59
  660. package/styles/core/jkl/_typography.scss +0 -196
  661. package/styles/core/jkl/legacy/_dynamic-colors.scss +0 -40
  662. package/styles/core/jkl/legacy/_index.scss +0 -2
  663. package/styles/core/jkl/legacy/_tokens.scss +0 -742
  664. package/styles/core/theme/_color-tokens.scss +0 -73
  665. package/styles/core/theme/_index.scss +0 -10
  666. package/styles/core/theme/_legacy-color-tokens.scss +0 -81
  667. package/styles/core/theme/_legacy-tokens.scss +0 -279
  668. package/styles/core/theme/_old-vars.scss +0 -21
  669. package/styles/core/theme/_shape.scss +0 -12
  670. package/styles/core/theme/_spacing-tokens.scss +0 -33
  671. package/styles/core/theme/_spacing.scss +0 -64
  672. package/styles/core/theme/_tokens.scss +0 -33
  673. package/styles/core/theme/_typography.scss +0 -38
  674. package/styles/fonts/_index.scss +0 -1
  675. package/styles/fonts/webfonts.css +0 -115
  676. package/styles/fonts/webfonts.min.css +0 -1
  677. package/styles/fonts/webfonts.scss +0 -145
  678. package/styles/styles.min.css +0 -3
  679. package/styles/styles.scss +0 -52
  680. /package/build/cjs/{components-beta → components/beta}/description-list/DescriptionList.d.cts +0 -0
  681. /package/build/cjs/{components-beta → components/beta}/description-list/DescriptionListItem.d.cts +0 -0
  682. /package/build/cjs/{components-beta → components/beta}/description-list/index.cjs +0 -0
  683. /package/build/cjs/{components-beta → components/beta}/description-list/index.cjs.map +0 -0
  684. /package/build/cjs/{components-beta → components/beta}/description-list/types.cjs +0 -0
  685. /package/build/cjs/{components-beta → components/beta}/description-list/types.cjs.map +0 -0
  686. /package/build/cjs/{components-beta → components/beta}/description-list/types.d.cts +0 -0
  687. /package/build/cjs/{components-beta → components/beta}/nav-link/NavLink.d.cts +0 -0
  688. /package/build/cjs/{components-beta → components/beta}/nav-link/index.cjs +0 -0
  689. /package/build/cjs/{components-beta → components/beta}/nav-link/index.cjs.map +0 -0
  690. /package/build/cjs/{components-beta → components/beta}/nav-link/types.cjs +0 -0
  691. /package/build/cjs/{components-beta → components/beta}/nav-link/types.cjs.map +0 -0
  692. /package/build/cjs/{components-beta → components/beta}/select/Select.d.cts +0 -0
  693. /package/build/cjs/{components-beta → components/beta}/select/index.cjs +0 -0
  694. /package/build/cjs/{components-beta → components/beta}/select/index.cjs.map +0 -0
  695. /package/build/cjs/{components-beta → components/beta}/select/types.cjs +0 -0
  696. /package/build/cjs/{components-beta → components/beta}/select/types.cjs.map +0 -0
  697. /package/build/cjs/{core → components/typography}/index.cjs.map +0 -0
  698. /package/build/cjs/{core → components/typography}/types.cjs +0 -0
  699. /package/build/cjs/{core → components/typography}/types.cjs.map +0 -0
  700. /package/build/es/{components-beta → components/beta}/description-list/DescriptionList.d.ts +0 -0
  701. /package/build/es/{components-beta → components/beta}/description-list/DescriptionListItem.d.ts +0 -0
  702. /package/build/es/{components-beta → components/beta}/description-list/index.js +0 -0
  703. /package/build/es/{components-beta → components/beta}/description-list/index.js.map +0 -0
  704. /package/build/es/{components-beta → components/beta}/description-list/types.d.ts +0 -0
  705. /package/build/es/{components-beta → components/beta}/description-list/types.js +0 -0
  706. /package/build/es/{components-beta → components/beta}/description-list/types.js.map +0 -0
  707. /package/build/es/{components-beta → components/beta}/nav-link/NavLink.d.ts +0 -0
  708. /package/build/es/{components-beta → components/beta}/nav-link/index.js +0 -0
  709. /package/build/es/{components-beta → components/beta}/nav-link/index.js.map +0 -0
  710. /package/build/es/{components-beta → components/beta}/nav-link/types.js +0 -0
  711. /package/build/es/{components-beta → components/beta}/nav-link/types.js.map +0 -0
  712. /package/build/es/{components-beta → components/beta}/select/Select.d.ts +0 -0
  713. /package/build/es/{components-beta → components/beta}/select/index.js +0 -0
  714. /package/build/es/{components-beta → components/beta}/select/index.js.map +0 -0
  715. /package/build/es/{components-beta → components/beta}/select/types.js +0 -0
  716. /package/build/es/{components-beta → components/beta}/select/types.js.map +0 -0
  717. /package/build/es/{core → components/typography}/index.js.map +0 -0
  718. /package/build/es/{core → components/typography}/types.js +0 -0
  719. /package/build/es/{core → components/typography}/types.js.map +0 -0
  720. /package/styles/{core/_layers.scss → _layers.scss} +0 -0
  721. /package/styles/{core/core.scss → base.scss} +0 -0
  722. /package/styles/{components-beta → components/beta}/description-list/_index.scss +0 -0
  723. /package/styles/{components-beta → components/beta}/nav-link/_index.scss +0 -0
  724. /package/styles/{core/global → global}/_index.scss +0 -0
  725. /package/styles/{core/global → global}/_top-layer.scss +0 -0
  726. /package/styles/{core/jkl → jkl}/_convert.scss +0 -0
  727. /package/styles/{core/jkl → jkl}/_navigation.scss +0 -0
  728. /package/styles/{core/jkl → jkl}/_responsive-units.scss +0 -0
  729. /package/styles/{core/jkl → jkl}/_screenreader.scss +0 -0
  730. /package/styles/{core/jkl → jkl}/_screens.scss +0 -0
  731. /package/styles/{core/jkl → jkl}/_shadows.scss +0 -0
  732. /package/styles/{core/jkl → jkl}/_underline.scss +0 -0
  733. /package/styles/{core/jkl → jkl}/_z-index.scss +0 -0
  734. /package/styles/{core/resets → resets}/_index.scss +0 -0
  735. /package/styles/{core/resets → resets}/_normalize.scss +0 -0
  736. /package/styles/{core/resets → resets}/_reset.scss +0 -0
  737. /package/styles/{core/utility → utility}/_headings.scss +0 -0
  738. /package/styles/{core/utility → utility}/_index.scss +0 -0
  739. /package/styles/{core/utility → utility}/_screen-reader.scss +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"useAnimatedHeight.js","sources":["../../../../src/hooks/useAnimatedHeight/useAnimatedHeight.ts"],"sourcesContent":["import { type RefObject, useCallback, useEffect, useRef } from \"react\";\nimport tokens from \"../../core/tokens.js\";\nimport { useBrowserPreferences } from \"../useBrowserPreferences/useBrowserPreferences.js\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\nimport type { UseAnimatedHeightOptions } from \"./types.js\";\n\nconst defaultDisplay = \"block\";\nconst defaultEasing = \"standard\";\nconst defaultTiming = \"productive\";\n\n/**\n * Lar deg animere et element opp til sin maksimale høyde, eller ned til 0.\n *\n * @param isOpen Om elementet er åpent eller lukket.\n * @param options Konfigurer display-property, easing og timing, og eventuelle callbacks for life cycle til animasjonen.\n * @returns Ref til elementet som skal animeres, og en funksjon for å trigge animasjonen manuelt.\n */\nexport function useAnimatedHeight<T extends HTMLElement>(\n isOpen: boolean,\n options?: UseAnimatedHeightOptions<T>,\n): [RefObject<T>, () => void] {\n const wasOpen = usePreviousValue(isOpen);\n const easing = options?.easing || defaultEasing;\n const timing = options?.timing || defaultTiming;\n const display = options?.display || defaultDisplay;\n const transition = `${tokens.motion.timing[timing]} height ${tokens.motion.easing[easing]}`;\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const raf1 = useRef<number>();\n const raf2 = useRef<number>();\n const elementRef = useRef<T>(null);\n\n function handleTransitionEnd(event: TransitionEvent) {\n const element = elementRef.current;\n\n // Ignore bubbling transitions from within container\n if (element && event.target === element) {\n if (isOpen) {\n element.removeAttribute(\"style\");\n } else {\n element.removeAttribute(\"style\");\n element.style.display = \"none\";\n }\n options?.onTransitionEnd?.(isOpen, elementRef);\n }\n }\n\n const runAnimation = useCallback(() => {\n const element = elementRef.current;\n\n // Ikke kjør animasjonen hvis elementet ikke er rendret,\n // eller hvis det er første render.\n if (!element || wasOpen === undefined) {\n return;\n }\n\n if (!isOpen) {\n element.style.display = \"none\";\n if (!wasOpen) {\n // Første render eller rerender med isOpen false\n return;\n }\n } else if (isOpen && wasOpen) {\n // Re-render etter å ha vært lukket, men forblitt åpen.\n return;\n }\n\n options?.onTransitionStart?.(isOpen, elementRef);\n\n if (prefersReducedMotion) {\n element.removeAttribute(\"style\");\n if (isOpen) {\n options?.onFirstVisible?.(isOpen, elementRef);\n } else {\n element.style.display = \"none\";\n }\n options?.onTransitionEnd?.(isOpen, elementRef); // make sure to call callback when animation is off\n return;\n }\n\n element.style.transition = transition;\n element.style.display = display;\n element.style.overflow = \"hidden\";\n\n if (isOpen) {\n options?.onFirstVisible?.(isOpen, elementRef);\n element.style.height = \"0\";\n element.style.height = `${element.scrollHeight}px`;\n } else {\n // If the scrollHeight is 0 it means that we are transitioning from height 0 -> 0.\n // This causes the \"transitionend\"-event to never fire and the element gets stuck with\n // style: height: 0; display: block; overflow:hidden\n if (element.scrollHeight === 0) {\n element.removeAttribute(\"style\");\n return;\n }\n\n element.style.height = `${element.scrollHeight}px`;\n\n raf1.current = requestAnimationFrame(() => {\n raf2.current = requestAnimationFrame(() => {\n element.style.height = `${0}px`;\n });\n });\n }\n }, [isOpen, options, wasOpen, transition, prefersReducedMotion, display]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: Vi trigger med isOpen\n useEffect(() => {\n runAnimation();\n }, [isOpen, runAnimation]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies:\n useEffect(() => {\n const element = elementRef.current;\n if (element) {\n element.addEventListener(\"transitionend\", handleTransitionEnd);\n }\n\n return () => {\n if (element) {\n element.removeEventListener(\n \"transitionend\",\n handleTransitionEnd,\n );\n }\n };\n }, [isOpen]);\n\n useEffect(() => {\n const r1 = raf1.current;\n const r2 = raf2.current;\n return () => {\n r1 && cancelAnimationFrame(r1);\n r2 && cancelAnimationFrame(r2);\n };\n }, []);\n\n return [elementRef, runAnimation];\n}\n"],"names":["useAnimatedHeight","isOpen","options","wasOpen","usePreviousValue","easing","timing","display","transition","tokens","motion","prefersReducedMotion","useBrowserPreferences","raf1","useRef","raf2","elementRef","handleTransitionEnd","event","element","current","target","removeAttribute","style","onTransitionEnd","runAnimation","useCallback","onTransitionStart","onFirstVisible","overflow","height","scrollHeight","requestAnimationFrame","useEffect","addEventListener","removeEventListener","r1","r2","cancelAnimationFrame"],"mappings":"wQAiBO,SAASA,EACZC,EACAC,GAEA,MAAMC,EAAUC,EAAiBH,GAC3BI,EAASH,GAASG,QAfN,WAgBZC,EAASJ,GAASI,QAfN,aAgBZC,EAAUL,GAASK,SAlBN,QAmBbC,EAAa,GAAGC,EAAOC,OAAOJ,OAAOA,aAAkBG,EAAOC,OAAOL,OAAOA,MAE1EM,qBAAAA,GAAyBC,IAE3BC,EAAOC,IACPC,EAAOD,IACPE,EAAaF,EAAU,MAE7B,SAASG,EAAoBC,GACzB,MAAMC,EAAUH,EAAWI,QAGvBD,GAAWD,EAAMG,SAAWF,IACxBlB,EACAkB,EAAQG,gBAAgB,UAExBH,EAAQG,gBAAgB,SACxBH,EAAQI,MAAMhB,QAAU,QAE5BL,GAASsB,kBAAkBvB,EAAQe,GAE3C,CAEA,MAAMS,EAAeC,EAAY,KAC7B,MAAMP,EAAUH,EAAWI,QAI3B,GAAKD,QAAuB,IAAZhB,EAIhB,CAAA,GAAKF,GAML,GAAWA,GAAUE,EAEjB,YAAA,GAPAgB,EAAQI,MAAMhB,QAAU,QACnBJ,EAED,OASR,GAFAD,GAASyB,oBAAoB1B,EAAQe,GAEjCL,EAQA,OAPAQ,EAAQG,gBAAgB,SACpBrB,EACAC,GAAS0B,iBAAiB3B,EAAQe,GAElCG,EAAQI,MAAMhB,QAAU,YAE5BL,GAASsB,kBAAkBvB,EAAQe,GAQvC,GAJAG,EAAQI,MAAMf,WAAaA,EAC3BW,EAAQI,MAAMhB,QAAUA,EACxBY,EAAQI,MAAMM,SAAW,SAErB5B,EACAC,GAAS0B,iBAAiB3B,EAAQe,GAClCG,EAAQI,MAAMO,OAAS,IACvBX,EAAQI,MAAMO,OAAS,GAAGX,EAAQY,qBAC/B,CAIH,GAA6B,IAAzBZ,EAAQY,aAER,YADAZ,EAAQG,gBAAgB,SAI5BH,EAAQI,MAAMO,OAAS,GAAGX,EAAQY,iBAElClB,EAAKO,QAAUY,sBAAsB,KACjCjB,EAAKK,QAAUY,sBAAsB,KACjCb,EAAQI,MAAMO,OAAS,SAGnC,CAAA,GACD,CAAC7B,EAAQC,EAASC,EAASK,EAAYG,EAAsBJ,IAGhE,OAAA0B,EAAU,KACNR,KACD,CAACxB,EAAQwB,IAGZQ,EAAU,KACN,MAAMd,EAAUH,EAAWI,QAC3B,OAAID,GACAA,EAAQe,iBAAiB,gBAAiBjB,GAGvC,KACCE,GACAA,EAAQgB,oBACJ,gBACAlB,KAIb,CAAChB,IAEJgC,EAAU,KACN,MAAMG,EAAKvB,EAAKO,QACViB,EAAKtB,EAAKK,QAChB,MAAO,KACHgB,GAAME,qBAAqBF,GAC3BC,GAAMC,qBAAqBD,KAEhC,IAEI,CAACrB,EAAYS,EACxB"}
1
+ {"version":3,"file":"useAnimatedHeight.js","sources":["../../../../src/hooks/useAnimatedHeight/useAnimatedHeight.ts"],"sourcesContent":["import { type RefObject, useCallback, useEffect, useRef } from \"react\";\nimport tokens from \"../../tokens.js\";\nimport { useBrowserPreferences } from \"../useBrowserPreferences/useBrowserPreferences.js\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\nimport type { UseAnimatedHeightOptions } from \"./types.js\";\n\nconst defaultDisplay = \"block\";\nconst defaultEasing = \"standard\";\nconst defaultTiming = \"productive\";\n\n/**\n * Lar deg animere et element opp til sin maksimale høyde, eller ned til 0.\n *\n * @param isOpen Om elementet er åpent eller lukket.\n * @param options Konfigurer display-property, easing og timing, og eventuelle callbacks for life cycle til animasjonen.\n * @returns Ref til elementet som skal animeres, og en funksjon for å trigge animasjonen manuelt.\n */\nexport function useAnimatedHeight<T extends HTMLElement>(\n isOpen: boolean,\n options?: UseAnimatedHeightOptions<T>,\n): [RefObject<T>, () => void] {\n const wasOpen = usePreviousValue(isOpen);\n const easing = options?.easing || defaultEasing;\n const timing = options?.timing || defaultTiming;\n const display = options?.display || defaultDisplay;\n const transition = `${tokens.motion.timing[timing]} height ${tokens.motion.easing[easing]}`;\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const raf1 = useRef<number>();\n const raf2 = useRef<number>();\n const elementRef = useRef<T>(null);\n\n function handleTransitionEnd(event: TransitionEvent) {\n const element = elementRef.current;\n\n // Ignore bubbling transitions from within container\n if (element && event.target === element) {\n if (isOpen) {\n element.removeAttribute(\"style\");\n } else {\n element.removeAttribute(\"style\");\n element.style.display = \"none\";\n }\n options?.onTransitionEnd?.(isOpen, elementRef);\n }\n }\n\n const runAnimation = useCallback(() => {\n const element = elementRef.current;\n\n // Ikke kjør animasjonen hvis elementet ikke er rendret,\n // eller hvis det er første render.\n if (!element || wasOpen === undefined) {\n return;\n }\n\n if (!isOpen) {\n element.style.display = \"none\";\n if (!wasOpen) {\n // Første render eller rerender med isOpen false\n return;\n }\n } else if (isOpen && wasOpen) {\n // Re-render etter å ha vært lukket, men forblitt åpen.\n return;\n }\n\n options?.onTransitionStart?.(isOpen, elementRef);\n\n if (prefersReducedMotion) {\n element.removeAttribute(\"style\");\n if (isOpen) {\n options?.onFirstVisible?.(isOpen, elementRef);\n } else {\n element.style.display = \"none\";\n }\n options?.onTransitionEnd?.(isOpen, elementRef); // make sure to call callback when animation is off\n return;\n }\n\n element.style.transition = transition;\n element.style.display = display;\n element.style.overflow = \"hidden\";\n\n if (isOpen) {\n options?.onFirstVisible?.(isOpen, elementRef);\n element.style.height = \"0\";\n element.style.height = `${element.scrollHeight}px`;\n } else {\n // If the scrollHeight is 0 it means that we are transitioning from height 0 -> 0.\n // This causes the \"transitionend\"-event to never fire and the element gets stuck with\n // style: height: 0; display: block; overflow:hidden\n if (element.scrollHeight === 0) {\n element.removeAttribute(\"style\");\n return;\n }\n\n element.style.height = `${element.scrollHeight}px`;\n\n raf1.current = requestAnimationFrame(() => {\n raf2.current = requestAnimationFrame(() => {\n element.style.height = `${0}px`;\n });\n });\n }\n }, [isOpen, options, wasOpen, transition, prefersReducedMotion, display]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: Vi trigger med isOpen\n useEffect(() => {\n runAnimation();\n }, [isOpen, runAnimation]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies:\n useEffect(() => {\n const element = elementRef.current;\n if (element) {\n element.addEventListener(\"transitionend\", handleTransitionEnd);\n }\n\n return () => {\n if (element) {\n element.removeEventListener(\n \"transitionend\",\n handleTransitionEnd,\n );\n }\n };\n }, [isOpen]);\n\n useEffect(() => {\n const r1 = raf1.current;\n const r2 = raf2.current;\n return () => {\n r1 && cancelAnimationFrame(r1);\n r2 && cancelAnimationFrame(r2);\n };\n }, []);\n\n return [elementRef, runAnimation];\n}\n"],"names":["useAnimatedHeight","isOpen","options","wasOpen","usePreviousValue","easing","timing","display","transition","tokens","motion","prefersReducedMotion","useBrowserPreferences","raf1","useRef","raf2","elementRef","handleTransitionEnd","event","element","current","target","removeAttribute","style","onTransitionEnd","runAnimation","useCallback","onTransitionStart","onFirstVisible","overflow","height","scrollHeight","requestAnimationFrame","useEffect","addEventListener","removeEventListener","r1","r2","cancelAnimationFrame"],"mappings":"mQAiBO,SAASA,EACZC,EACAC,GAEA,MAAMC,EAAUC,EAAiBH,GAC3BI,EAASH,GAASG,QAfN,WAgBZC,EAASJ,GAASI,QAfN,aAgBZC,EAAUL,GAASK,SAlBN,QAmBbC,EAAa,GAAGC,EAAOC,OAAOJ,OAAOA,aAAkBG,EAAOC,OAAOL,OAAOA,MAE1EM,qBAAAA,GAAyBC,IAE3BC,EAAOC,IACPC,EAAOD,IACPE,EAAaF,EAAU,MAE7B,SAASG,EAAoBC,GACzB,MAAMC,EAAUH,EAAWI,QAGvBD,GAAWD,EAAMG,SAAWF,IACxBlB,EACAkB,EAAQG,gBAAgB,UAExBH,EAAQG,gBAAgB,SACxBH,EAAQI,MAAMhB,QAAU,QAE5BL,GAASsB,kBAAkBvB,EAAQe,GAE3C,CAEA,MAAMS,EAAeC,EAAY,KAC7B,MAAMP,EAAUH,EAAWI,QAI3B,GAAKD,QAAuB,IAAZhB,EAIhB,CAAA,GAAKF,GAML,GAAWA,GAAUE,EAEjB,YAAA,GAPAgB,EAAQI,MAAMhB,QAAU,QACnBJ,EAED,OASR,GAFAD,GAASyB,oBAAoB1B,EAAQe,GAEjCL,EAQA,OAPAQ,EAAQG,gBAAgB,SACpBrB,EACAC,GAAS0B,iBAAiB3B,EAAQe,GAElCG,EAAQI,MAAMhB,QAAU,YAE5BL,GAASsB,kBAAkBvB,EAAQe,GAQvC,GAJAG,EAAQI,MAAMf,WAAaA,EAC3BW,EAAQI,MAAMhB,QAAUA,EACxBY,EAAQI,MAAMM,SAAW,SAErB5B,EACAC,GAAS0B,iBAAiB3B,EAAQe,GAClCG,EAAQI,MAAMO,OAAS,IACvBX,EAAQI,MAAMO,OAAS,GAAGX,EAAQY,qBAC/B,CAIH,GAA6B,IAAzBZ,EAAQY,aAER,YADAZ,EAAQG,gBAAgB,SAI5BH,EAAQI,MAAMO,OAAS,GAAGX,EAAQY,iBAElClB,EAAKO,QAAUY,sBAAsB,KACjCjB,EAAKK,QAAUY,sBAAsB,KACjCb,EAAQI,MAAMO,OAAS,SAGnC,CAAA,GACD,CAAC7B,EAAQC,EAASC,EAASK,EAAYG,EAAsBJ,IAGhE,OAAA0B,EAAU,KACNR,KACD,CAACxB,EAAQwB,IAGZQ,EAAU,KACN,MAAMd,EAAUH,EAAWI,QAC3B,OAAID,GACAA,EAAQe,iBAAiB,gBAAiBjB,GAGvC,KACCE,GACAA,EAAQgB,oBACJ,gBACAlB,KAIb,CAAChB,IAEJgC,EAAU,KACN,MAAMG,EAAKvB,EAAKO,QACViB,EAAKtB,EAAKK,QAChB,MAAO,KACHgB,GAAME,qBAAqBF,GAC3BC,GAAMC,qBAAqBD,KAEhC,IAEI,CAACrB,EAAYS,EACxB"}
@@ -1,2 +1,2 @@
1
- import{useRef as e,useCallback as t,useEffect as r}from"react";import n from"../../core/tokens.js";import{useBrowserPreferences as s}from"../useBrowserPreferences/useBrowserPreferences.js";import{usePreviousValue as o}from"../usePreviousValue/usePreviousValue.js";function i(i,a){const u=o(i),c=a?.easing||"standard",d=a?.timing||"productive",l=`${n.motion.timing[d]} height ${n.motion.easing[c]}`,{prefersReducedMotion:m}=s(),p=e(),y=e(),f=e(null),g=t(e=>{const t=f.current;t&&e.target===t&&(t.removeAttribute("style"),a?.onTransitionEnd?.(i,f))},[a,i]),h=t(()=>{const e=f.current;if(e&&(void 0===u&&(e.dataset.expanded=i?"true":"false"),!(!i&&!u||i&&u))){if(a?.onTransitionStart?.(i,f),m)return e.removeAttribute("style"),e.dataset.expanded=i?"true":"false",void a?.onTransitionEnd?.(i,f);i?function(e,t,r,n){const s=e.current;if(!s)return;s.removeAttribute("style");const o=s.scrollHeight;r.current=requestAnimationFrame(()=>{s.style.removeProperty("transition"),s.dataset.expanded="false";const e=s.getBoundingClientRect().height;s.style.setProperty("height",`${e}px`),s.style.setProperty("overflow-y","hidden"),n.current=requestAnimationFrame(()=>{s.style.setProperty("transition",t),s.style.setProperty("height",`${o}px`),s.dataset.expanded="true"})})}(f,l,p,y):function(e,t,r,n){const s=e.current;if(!s)return;s.removeAttribute("style");const o=s.scrollHeight;r.current=requestAnimationFrame(()=>{s.style.removeProperty("transition"),s.dataset.expanded="false";const e=s.getBoundingClientRect().height;s.dataset.expanded="true",s.style.setProperty("height",`${o}px`),s.style.setProperty("overflow-y","hidden"),n.current=requestAnimationFrame(()=>{s.style.setProperty("transition",t),s.style.setProperty("height",`${e}px`),s.dataset.expanded="false"})})}(f,l,p,y)}},[u,i,a,m,l]);return r(()=>{h()},[i,h]),r(()=>{const e=f.current;return e&&e.addEventListener("transitionend",g),()=>{e&&e.removeEventListener("transitionend",g)}},[i]),r(()=>{const e=p.current,t=y.current;return()=>{e&&cancelAnimationFrame(e),t&&cancelAnimationFrame(t)}},[]),[f,h]}export{i as useAnimatedHeightBetween};
1
+ import{useRef as e,useCallback as t,useEffect as r}from"react";import n from"../../tokens.js";import{useBrowserPreferences as s}from"../useBrowserPreferences/useBrowserPreferences.js";import{usePreviousValue as o}from"../usePreviousValue/usePreviousValue.js";function i(i,a){const u=o(i),c=a?.easing||"standard",d=a?.timing||"productive",l=`${n.motion.timing[d]} height ${n.motion.easing[c]}`,{prefersReducedMotion:m}=s(),p=e(),y=e(),f=e(null),g=t(e=>{const t=f.current;t&&e.target===t&&(t.removeAttribute("style"),a?.onTransitionEnd?.(i,f))},[a,i]),h=t(()=>{const e=f.current;if(e&&(void 0===u&&(e.dataset.expanded=i?"true":"false"),!(!i&&!u||i&&u))){if(a?.onTransitionStart?.(i,f),m)return e.removeAttribute("style"),e.dataset.expanded=i?"true":"false",void a?.onTransitionEnd?.(i,f);i?function(e,t,r,n){const s=e.current;if(!s)return;s.removeAttribute("style");const o=s.scrollHeight;r.current=requestAnimationFrame(()=>{s.style.removeProperty("transition"),s.dataset.expanded="false";const e=s.getBoundingClientRect().height;s.style.setProperty("height",`${e}px`),s.style.setProperty("overflow-y","hidden"),n.current=requestAnimationFrame(()=>{s.style.setProperty("transition",t),s.style.setProperty("height",`${o}px`),s.dataset.expanded="true"})})}(f,l,p,y):function(e,t,r,n){const s=e.current;if(!s)return;s.removeAttribute("style");const o=s.scrollHeight;r.current=requestAnimationFrame(()=>{s.style.removeProperty("transition"),s.dataset.expanded="false";const e=s.getBoundingClientRect().height;s.dataset.expanded="true",s.style.setProperty("height",`${o}px`),s.style.setProperty("overflow-y","hidden"),n.current=requestAnimationFrame(()=>{s.style.setProperty("transition",t),s.style.setProperty("height",`${e}px`),s.dataset.expanded="false"})})}(f,l,p,y)}},[u,i,a,m,l]);return r(()=>{h()},[i,h]),r(()=>{const e=f.current;return e&&e.addEventListener("transitionend",g),()=>{e&&e.removeEventListener("transitionend",g)}},[i]),r(()=>{const e=p.current,t=y.current;return()=>{e&&cancelAnimationFrame(e),t&&cancelAnimationFrame(t)}},[]),[f,h]}export{i as useAnimatedHeightBetween};
2
2
  //# sourceMappingURL=useAnimatedHeightBetween.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAnimatedHeightBetween.js","sources":["../../../../src/hooks/useAnimatedHeight/useAnimatedHeightBetween.ts"],"sourcesContent":["import { type RefObject, useCallback, useEffect, useRef } from \"react\";\nimport tokens from \"../../core/tokens.js\";\nimport { useBrowserPreferences } from \"../useBrowserPreferences/useBrowserPreferences.js\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\nimport type { UseAnimatedHeightOptions } from \"./types.js\";\n\nconst defaultEasing = \"standard\";\nconst defaultTiming = \"productive\";\n\nfunction collapseElement<T extends HTMLElement>(\n elementRef: RefObject<T | null>,\n transition: string,\n raf1: React.MutableRefObject<number | undefined>,\n raf2: React.MutableRefObject<number | undefined>,\n) {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const expandedHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Hent kollapset høyde\n element.style.removeProperty(\"transition\");\n element.dataset.expanded = \"false\";\n const collapsedHeight = element.getBoundingClientRect().height;\n element.dataset.expanded = \"true\";\n\n // Sett høyde tilbake til utvidet høyde\n element.style.setProperty(\"height\", `${expandedHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til kollapset høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${collapsedHeight}px`);\n element.dataset.expanded = \"false\";\n });\n });\n}\n\nfunction expandElement<T extends HTMLElement>(\n elementRef: RefObject<T | null>,\n transition: string,\n raf1: React.MutableRefObject<number | undefined>,\n raf2: React.MutableRefObject<number | undefined>,\n) {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const expandedHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Hent utvidet høyde\n element.style.removeProperty(\"transition\");\n element.dataset.expanded = \"false\";\n const collapsedHeight = element.getBoundingClientRect().height;\n\n // Sett høyde tilbake til kollapset høyde\n element.style.setProperty(\"height\", `${collapsedHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til utvidet høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${expandedHeight}px`);\n element.dataset.expanded = \"true\";\n });\n });\n}\n\n/**\n * Lar deg enklere animere mellom to tilstander, gitt ved å sette `data-expanded` på et element til `true` eller `false`.\n * Du bestemmer selv hvilke stiler elementet skal ha i de to tilstandene (vha CSS/Sass), og høyden animeres dersom den endrer seg.\n * @param isExpanded indikerer om elementet skal være utvidet eller ikke\n * @param options konfigurasjon for animasjonen, og lyttere for når animasjonen starter og slutter\n * @returns En tuple med referanse til elementet og en funksjon som kan trigge animasjonen\n */\nexport function useAnimatedHeightBetween<T extends HTMLElement>(\n isExpanded: boolean,\n options?: Omit<UseAnimatedHeightOptions<T>, \"display\" | \"onFirstVisible\">,\n): [RefObject<T>, () => void] {\n const wasExpanded = usePreviousValue(isExpanded);\n const easing = options?.easing || defaultEasing;\n const timing = options?.timing || defaultTiming;\n const transition = `${tokens.motion.timing[timing]} height ${tokens.motion.easing[easing]}`;\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const raf1 = useRef<number>();\n const raf2 = useRef<number>();\n const elementRef = useRef<T>(null);\n\n const handleTransitionEnd = useCallback(\n (event: TransitionEvent) => {\n const element = elementRef.current;\n\n // Ignore bubbling transitions from within container\n if (element && event.target === element) {\n element.removeAttribute(\"style\");\n options?.onTransitionEnd?.(isExpanded, elementRef);\n }\n },\n [options, isExpanded],\n );\n\n const runAnimation = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n if (wasExpanded === undefined) {\n // Første render\n element.dataset.expanded = isExpanded ? \"true\" : \"false\";\n }\n\n if ((!isExpanded && !wasExpanded) || (isExpanded && wasExpanded)) {\n // Ingen endring\n return;\n }\n\n options?.onTransitionStart?.(isExpanded, elementRef);\n\n if (prefersReducedMotion) {\n element.removeAttribute(\"style\");\n element.dataset.expanded = isExpanded ? \"true\" : \"false\";\n options?.onTransitionEnd?.(isExpanded, elementRef); // make sure to call callback when animation is off\n return;\n }\n\n if (isExpanded) {\n expandElement(elementRef, transition, raf1, raf2);\n } else {\n collapseElement(elementRef, transition, raf1, raf2);\n }\n }, [wasExpanded, isExpanded, options, prefersReducedMotion, transition]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: Vi trigger med isExpanded\n useEffect(() => {\n runAnimation();\n }, [isExpanded, runAnimation]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies:\n useEffect(() => {\n const element = elementRef.current;\n if (element) {\n element.addEventListener(\"transitionend\", handleTransitionEnd);\n }\n\n return () => {\n if (element) {\n element.removeEventListener(\n \"transitionend\",\n handleTransitionEnd,\n );\n }\n };\n }, [isExpanded]);\n\n useEffect(() => {\n const r1 = raf1.current;\n const r2 = raf2.current;\n return () => {\n r1 && cancelAnimationFrame(r1);\n r2 && cancelAnimationFrame(r2);\n };\n }, []);\n\n return [elementRef, runAnimation];\n}\n"],"names":["useAnimatedHeightBetween","isExpanded","options","wasExpanded","usePreviousValue","easing","timing","transition","tokens","motion","prefersReducedMotion","useBrowserPreferences","raf1","useRef","raf2","elementRef","handleTransitionEnd","useCallback","event","element","current","target","removeAttribute","onTransitionEnd","runAnimation","dataset","expanded","onTransitionStart","expandedHeight","scrollHeight","requestAnimationFrame","style","removeProperty","collapsedHeight","getBoundingClientRect","height","setProperty","expandElement","collapseElement","useEffect","addEventListener","removeEventListener","r1","r2","cancelAnimationFrame"],"mappings":"wQAiFO,SAASA,EACZC,EACAC,GAEA,MAAMC,EAAcC,EAAiBH,GAC/BI,EAASH,GAASG,QAhFN,WAiFZC,EAASJ,GAASI,QAhFN,aAiFZC,EAAa,GAAGC,EAAOC,OAAOH,OAAOA,aAAkBE,EAAOC,OAAOJ,OAAOA,MAE1EK,qBAAAA,GAAyBC,IAE3BC,EAAOC,IACPC,EAAOD,IACPE,EAAaF,EAAU,MAEvBG,EAAsBC,EACvBC,IACG,MAAMC,EAAUJ,EAAWK,QAGvBD,GAAWD,EAAMG,SAAWF,IAC5BA,EAAQG,gBAAgB,SACxBpB,GAASqB,kBAAkBtB,EAAYc,KAG/C,CAACb,EAASD,IAGRuB,EAAeP,EAAY,KAC7B,MAAME,EAAUJ,EAAWK,QAE3B,GAAKD,SAEe,IAAhBhB,IAEAgB,EAAQM,QAAQC,SAAWzB,EAAa,OAAS,YAG/CA,IAAeE,GAAiBF,GAAcE,IAOpD,CAAA,GAFAD,GAASyB,oBAAoB1B,EAAYc,GAErCL,EAIA,OAHAS,EAAQG,gBAAgB,SACxBH,EAAQM,QAAQC,SAAWzB,EAAa,OAAS,aACjDC,GAASqB,kBAAkBtB,EAAYc,GAIvCd,EA3FZ,SACIc,EACAR,EACAK,EACAE,GAEA,MAAMK,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMM,EAAiBT,EAAQU,aAE/BjB,EAAKQ,QAAUU,sBAAsB,KAEjCX,EAAQY,MAAMC,eAAe,cAC7Bb,EAAQM,QAAQC,SAAW,QAC3B,MAAMO,EAAkBd,EAAQe,wBAAwBC,OAGxDhB,EAAQY,MAAMK,YAAY,SAAU,GAAGH,OACvCd,EAAQY,MAAMK,YAAY,aAAc,UAExCtB,EAAKM,QAAUU,sBAAsB,KAEjCX,EAAQY,MAAMK,YAAY,aAAc7B,GACxCY,EAAQY,MAAMK,YAAY,SAAU,GAAGR,OACvCT,EAAQM,QAAQC,SAAW,UAGvC,CA8DYW,CAActB,EAAYR,EAAYK,EAAME,GA7HxD,SACIC,EACAR,EACAK,EACAE,GAEA,MAAMK,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMM,EAAiBT,EAAQU,aAE/BjB,EAAKQ,QAAUU,sBAAsB,KAEjCX,EAAQY,MAAMC,eAAe,cAC7Bb,EAAQM,QAAQC,SAAW,QAC3B,MAAMO,EAAkBd,EAAQe,wBAAwBC,OACxDhB,EAAQM,QAAQC,SAAW,OAG3BP,EAAQY,MAAMK,YAAY,SAAU,GAAGR,OACvCT,EAAQY,MAAMK,YAAY,aAAc,UAExCtB,EAAKM,QAAUU,sBAAsB,KAEjCX,EAAQY,MAAMK,YAAY,aAAc7B,GACxCY,EAAQY,MAAMK,YAAY,SAAU,GAAGH,OACvCd,EAAQM,QAAQC,SAAW,WAGvC,CAgGYY,CAAgBvB,EAAYR,EAAYK,EAAME,EAAI,GAEvD,CAACX,EAAaF,EAAYC,EAASQ,EAAsBH,IAG5D,OAAAgC,EAAU,KACNf,KACD,CAACvB,EAAYuB,IAGhBe,EAAU,KACN,MAAMpB,EAAUJ,EAAWK,QAC3B,OAAID,GACAA,EAAQqB,iBAAiB,gBAAiBxB,GAGvC,KACCG,GACAA,EAAQsB,oBACJ,gBACAzB,KAIb,CAACf,IAEJsC,EAAU,KACN,MAAMG,EAAK9B,EAAKQ,QACVuB,EAAK7B,EAAKM,QAChB,MAAO,KACHsB,GAAME,qBAAqBF,GAC3BC,GAAMC,qBAAqBD,KAEhC,IAEI,CAAC5B,EAAYS,EACxB"}
1
+ {"version":3,"file":"useAnimatedHeightBetween.js","sources":["../../../../src/hooks/useAnimatedHeight/useAnimatedHeightBetween.ts"],"sourcesContent":["import { type RefObject, useCallback, useEffect, useRef } from \"react\";\nimport tokens from \"../../tokens.js\";\nimport { useBrowserPreferences } from \"../useBrowserPreferences/useBrowserPreferences.js\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\nimport type { UseAnimatedHeightOptions } from \"./types.js\";\n\nconst defaultEasing = \"standard\";\nconst defaultTiming = \"productive\";\n\nfunction collapseElement<T extends HTMLElement>(\n elementRef: RefObject<T | null>,\n transition: string,\n raf1: React.MutableRefObject<number | undefined>,\n raf2: React.MutableRefObject<number | undefined>,\n) {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const expandedHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Hent kollapset høyde\n element.style.removeProperty(\"transition\");\n element.dataset.expanded = \"false\";\n const collapsedHeight = element.getBoundingClientRect().height;\n element.dataset.expanded = \"true\";\n\n // Sett høyde tilbake til utvidet høyde\n element.style.setProperty(\"height\", `${expandedHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til kollapset høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${collapsedHeight}px`);\n element.dataset.expanded = \"false\";\n });\n });\n}\n\nfunction expandElement<T extends HTMLElement>(\n elementRef: RefObject<T | null>,\n transition: string,\n raf1: React.MutableRefObject<number | undefined>,\n raf2: React.MutableRefObject<number | undefined>,\n) {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const expandedHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Hent utvidet høyde\n element.style.removeProperty(\"transition\");\n element.dataset.expanded = \"false\";\n const collapsedHeight = element.getBoundingClientRect().height;\n\n // Sett høyde tilbake til kollapset høyde\n element.style.setProperty(\"height\", `${collapsedHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til utvidet høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${expandedHeight}px`);\n element.dataset.expanded = \"true\";\n });\n });\n}\n\n/**\n * Lar deg enklere animere mellom to tilstander, gitt ved å sette `data-expanded` på et element til `true` eller `false`.\n * Du bestemmer selv hvilke stiler elementet skal ha i de to tilstandene (vha CSS/Sass), og høyden animeres dersom den endrer seg.\n * @param isExpanded indikerer om elementet skal være utvidet eller ikke\n * @param options konfigurasjon for animasjonen, og lyttere for når animasjonen starter og slutter\n * @returns En tuple med referanse til elementet og en funksjon som kan trigge animasjonen\n */\nexport function useAnimatedHeightBetween<T extends HTMLElement>(\n isExpanded: boolean,\n options?: Omit<UseAnimatedHeightOptions<T>, \"display\" | \"onFirstVisible\">,\n): [RefObject<T>, () => void] {\n const wasExpanded = usePreviousValue(isExpanded);\n const easing = options?.easing || defaultEasing;\n const timing = options?.timing || defaultTiming;\n const transition = `${tokens.motion.timing[timing]} height ${tokens.motion.easing[easing]}`;\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const raf1 = useRef<number>();\n const raf2 = useRef<number>();\n const elementRef = useRef<T>(null);\n\n const handleTransitionEnd = useCallback(\n (event: TransitionEvent) => {\n const element = elementRef.current;\n\n // Ignore bubbling transitions from within container\n if (element && event.target === element) {\n element.removeAttribute(\"style\");\n options?.onTransitionEnd?.(isExpanded, elementRef);\n }\n },\n [options, isExpanded],\n );\n\n const runAnimation = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n if (wasExpanded === undefined) {\n // Første render\n element.dataset.expanded = isExpanded ? \"true\" : \"false\";\n }\n\n if ((!isExpanded && !wasExpanded) || (isExpanded && wasExpanded)) {\n // Ingen endring\n return;\n }\n\n options?.onTransitionStart?.(isExpanded, elementRef);\n\n if (prefersReducedMotion) {\n element.removeAttribute(\"style\");\n element.dataset.expanded = isExpanded ? \"true\" : \"false\";\n options?.onTransitionEnd?.(isExpanded, elementRef); // make sure to call callback when animation is off\n return;\n }\n\n if (isExpanded) {\n expandElement(elementRef, transition, raf1, raf2);\n } else {\n collapseElement(elementRef, transition, raf1, raf2);\n }\n }, [wasExpanded, isExpanded, options, prefersReducedMotion, transition]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: Vi trigger med isExpanded\n useEffect(() => {\n runAnimation();\n }, [isExpanded, runAnimation]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies:\n useEffect(() => {\n const element = elementRef.current;\n if (element) {\n element.addEventListener(\"transitionend\", handleTransitionEnd);\n }\n\n return () => {\n if (element) {\n element.removeEventListener(\n \"transitionend\",\n handleTransitionEnd,\n );\n }\n };\n }, [isExpanded]);\n\n useEffect(() => {\n const r1 = raf1.current;\n const r2 = raf2.current;\n return () => {\n r1 && cancelAnimationFrame(r1);\n r2 && cancelAnimationFrame(r2);\n };\n }, []);\n\n return [elementRef, runAnimation];\n}\n"],"names":["useAnimatedHeightBetween","isExpanded","options","wasExpanded","usePreviousValue","easing","timing","transition","tokens","motion","prefersReducedMotion","useBrowserPreferences","raf1","useRef","raf2","elementRef","handleTransitionEnd","useCallback","event","element","current","target","removeAttribute","onTransitionEnd","runAnimation","dataset","expanded","onTransitionStart","expandedHeight","scrollHeight","requestAnimationFrame","style","removeProperty","collapsedHeight","getBoundingClientRect","height","setProperty","expandElement","collapseElement","useEffect","addEventListener","removeEventListener","r1","r2","cancelAnimationFrame"],"mappings":"mQAiFO,SAASA,EACZC,EACAC,GAEA,MAAMC,EAAcC,EAAiBH,GAC/BI,EAASH,GAASG,QAhFN,WAiFZC,EAASJ,GAASI,QAhFN,aAiFZC,EAAa,GAAGC,EAAOC,OAAOH,OAAOA,aAAkBE,EAAOC,OAAOJ,OAAOA,MAE1EK,qBAAAA,GAAyBC,IAE3BC,EAAOC,IACPC,EAAOD,IACPE,EAAaF,EAAU,MAEvBG,EAAsBC,EACvBC,IACG,MAAMC,EAAUJ,EAAWK,QAGvBD,GAAWD,EAAMG,SAAWF,IAC5BA,EAAQG,gBAAgB,SACxBpB,GAASqB,kBAAkBtB,EAAYc,KAG/C,CAACb,EAASD,IAGRuB,EAAeP,EAAY,KAC7B,MAAME,EAAUJ,EAAWK,QAE3B,GAAKD,SAEe,IAAhBhB,IAEAgB,EAAQM,QAAQC,SAAWzB,EAAa,OAAS,YAG/CA,IAAeE,GAAiBF,GAAcE,IAOpD,CAAA,GAFAD,GAASyB,oBAAoB1B,EAAYc,GAErCL,EAIA,OAHAS,EAAQG,gBAAgB,SACxBH,EAAQM,QAAQC,SAAWzB,EAAa,OAAS,aACjDC,GAASqB,kBAAkBtB,EAAYc,GAIvCd,EA3FZ,SACIc,EACAR,EACAK,EACAE,GAEA,MAAMK,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMM,EAAiBT,EAAQU,aAE/BjB,EAAKQ,QAAUU,sBAAsB,KAEjCX,EAAQY,MAAMC,eAAe,cAC7Bb,EAAQM,QAAQC,SAAW,QAC3B,MAAMO,EAAkBd,EAAQe,wBAAwBC,OAGxDhB,EAAQY,MAAMK,YAAY,SAAU,GAAGH,OACvCd,EAAQY,MAAMK,YAAY,aAAc,UAExCtB,EAAKM,QAAUU,sBAAsB,KAEjCX,EAAQY,MAAMK,YAAY,aAAc7B,GACxCY,EAAQY,MAAMK,YAAY,SAAU,GAAGR,OACvCT,EAAQM,QAAQC,SAAW,UAGvC,CA8DYW,CAActB,EAAYR,EAAYK,EAAME,GA7HxD,SACIC,EACAR,EACAK,EACAE,GAEA,MAAMK,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMM,EAAiBT,EAAQU,aAE/BjB,EAAKQ,QAAUU,sBAAsB,KAEjCX,EAAQY,MAAMC,eAAe,cAC7Bb,EAAQM,QAAQC,SAAW,QAC3B,MAAMO,EAAkBd,EAAQe,wBAAwBC,OACxDhB,EAAQM,QAAQC,SAAW,OAG3BP,EAAQY,MAAMK,YAAY,SAAU,GAAGR,OACvCT,EAAQY,MAAMK,YAAY,aAAc,UAExCtB,EAAKM,QAAUU,sBAAsB,KAEjCX,EAAQY,MAAMK,YAAY,aAAc7B,GACxCY,EAAQY,MAAMK,YAAY,SAAU,GAAGH,OACvCd,EAAQM,QAAQC,SAAW,WAGvC,CAgGYY,CAAgBvB,EAAYR,EAAYK,EAAME,EAAI,GAEvD,CAACX,EAAaF,EAAYC,EAASQ,EAAsBH,IAG5D,OAAAgC,EAAU,KACNf,KACD,CAACvB,EAAYuB,IAGhBe,EAAU,KACN,MAAMpB,EAAUJ,EAAWK,QAC3B,OAAID,GACAA,EAAQqB,iBAAiB,gBAAiBxB,GAGvC,KACCG,GACAA,EAAQsB,oBACJ,gBACAzB,KAIb,CAACf,IAEJsC,EAAU,KACN,MAAMG,EAAK9B,EAAKQ,QACVuB,EAAK7B,EAAKM,QAChB,MAAO,KACHsB,GAAME,qBAAqBF,GAC3BC,GAAMC,qBAAqBD,KAEhC,IAEI,CAAC5B,EAAYS,EACxB"}
@@ -1,5 +1,5 @@
1
1
  import { RefObject } from 'react';
2
- import { Easing, Timing } from '../../core/types.js';
2
+ import { Easing, Timing } from '../../utilities/types.js';
3
3
  export type UseAutoAnimatedHeightOptions<T extends HTMLElement> = {
4
4
  easing?: Easing;
5
5
  /**
@@ -1,2 +1,2 @@
1
- import{useState as e,useRef as r,useCallback as t,useEffect as n}from"react";import s from"../../core/tokens.js";import{useBrowserPreferences as o}from"../useBrowserPreferences/useBrowserPreferences.js";import{usePreviousValue as i}from"../usePreviousValue/usePreviousValue.js";function a(a,u){const c=i(a),[m,l]=e(0),f=u?.easing||"standard",d=u?.timing||"expressive",p=`${s.motion.timing[d]} height ${s.motion.easing[f]}`,{prefersReducedMotion:v}=o(),y=r(),g=r(),P=r(null),h=t(e=>{const r=P.current;r&&e.target===r&&(r.removeAttribute("style"),u?.onTransitionEnd?.(P))},[u]),A=t(()=>{const e=P.current;if(!e)return;e.removeAttribute("style");const r=e.scrollHeight;y.current=requestAnimationFrame(()=>{e.style.removeProperty("transition"),e.style.setProperty("height",`${m}px`),e.style.setProperty("overflow-y","hidden"),g.current=requestAnimationFrame(()=>{e.style.setProperty("transition",p),e.style.setProperty("height",`${r}px`)})}),l(r)},[p,m]),E=t(()=>{const e=P.current;if(e){if(void 0===c)return void l(e.scrollHeight);if(a!==c){if(u?.onTransitionStart?.(P),v)return void u?.onTransitionEnd?.(P);A()}}},[A,a,c,u,v]);return n(()=>{E()},[a,E]),n(()=>{const e=P.current;return e&&e.addEventListener("transitionend",h),()=>{e&&e.removeEventListener("transitionend",h)}},[h]),n(()=>{const e=y.current,r=g.current;return()=>{e&&cancelAnimationFrame(e),r&&cancelAnimationFrame(r)}},[]),P}export{a as useAutoAnimatedHeight};
1
+ import{useState as e,useRef as r,useCallback as t,useEffect as n}from"react";import s from"../../tokens.js";import{useBrowserPreferences as o}from"../useBrowserPreferences/useBrowserPreferences.js";import{usePreviousValue as i}from"../usePreviousValue/usePreviousValue.js";function a(a,u){const c=i(a),[m,l]=e(0),f=u?.easing||"standard",d=u?.timing||"expressive",p=`${s.motion.timing[d]} height ${s.motion.easing[f]}`,{prefersReducedMotion:v}=o(),y=r(),g=r(),P=r(null),h=t(e=>{const r=P.current;r&&e.target===r&&(r.removeAttribute("style"),u?.onTransitionEnd?.(P))},[u]),A=t(()=>{const e=P.current;if(!e)return;e.removeAttribute("style");const r=e.scrollHeight;y.current=requestAnimationFrame(()=>{e.style.removeProperty("transition"),e.style.setProperty("height",`${m}px`),e.style.setProperty("overflow-y","hidden"),g.current=requestAnimationFrame(()=>{e.style.setProperty("transition",p),e.style.setProperty("height",`${r}px`)})}),l(r)},[p,m]),E=t(()=>{const e=P.current;if(e){if(void 0===c)return void l(e.scrollHeight);if(a!==c){if(u?.onTransitionStart?.(P),v)return void u?.onTransitionEnd?.(P);A()}}},[A,a,c,u,v]);return n(()=>{E()},[a,E]),n(()=>{const e=P.current;return e&&e.addEventListener("transitionend",h),()=>{e&&e.removeEventListener("transitionend",h)}},[h]),n(()=>{const e=y.current,r=g.current;return()=>{e&&cancelAnimationFrame(e),r&&cancelAnimationFrame(r)}},[]),P}export{a as useAutoAnimatedHeight};
2
2
  //# sourceMappingURL=useAutoAnimateHeight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoAnimateHeight.js","sources":["../../../../src/hooks/useAnimatedHeight/useAutoAnimateHeight.ts"],"sourcesContent":["import {\n type RefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport tokens from \"../../core/tokens.js\";\nimport type { Easing, Timing } from \"../../core/types.js\";\nimport { useBrowserPreferences } from \"../useBrowserPreferences/useBrowserPreferences.js\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\n\nconst defaultEasing = \"standard\";\nconst defaultTiming = \"expressive\";\n\nexport type UseAutoAnimatedHeightOptions<T extends HTMLElement> = {\n easing?: Easing;\n /**\n * Overstyr standard timing\n * @default \"expressive\"\n */\n timing?: Timing;\n onTransitionStart?: (ref: RefObject<T | null>) => void;\n onTransitionEnd?: (ref: RefObject<T | null>) => void;\n};\n\n/**\n * Gjør det enklere å animere høyden på et element når innholdet endrer seg, men kan brukes på mer generelt grunnlag.\n * Hooken tar inn en triggerverdi, og når denne endrer seg animeres høyden på elementet dersom den har endret seg.\n * @param trigger verdien som brukes til å trigge animasjonen. Dersom denne endrer seg animeres høyden på elementet.\n * @param options konfigurasjon for animasjonen, og lyttere for når animasjonen starter og slutter\n * @returns en referanse til elementet som skal animeres\n */\nexport function useAutoAnimatedHeight<T extends HTMLElement = HTMLElement>(\n trigger: any,\n options?: UseAutoAnimatedHeightOptions<T>,\n) {\n const previousTriggerValue = usePreviousValue(trigger);\n const [previousHeight, setPreviousHeight] = useState(0);\n\n const easing = options?.easing || defaultEasing;\n const timing = options?.timing || defaultTiming;\n const transition = `${tokens.motion.timing[timing]} height ${tokens.motion.easing[easing]}`;\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const raf1 = useRef<number>();\n const raf2 = useRef<number>();\n const elementRef = useRef<T>(null);\n\n const handleTransitionEnd = useCallback(\n (event: TransitionEvent) => {\n const element = elementRef.current;\n\n // Ignore bubbling transitions from within container\n if (element && event.target === element) {\n element.removeAttribute(\"style\");\n options?.onTransitionEnd?.(elementRef);\n }\n },\n [options],\n );\n\n const animateElement = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const newHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Sett høyde tilbake til forrige høyde\n element.style.removeProperty(\"transition\");\n element.style.setProperty(\"height\", `${previousHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til kollapset høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${newHeight}px`);\n });\n });\n\n setPreviousHeight(newHeight);\n }, [transition, previousHeight]);\n\n const runAnimation = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n if (previousTriggerValue === undefined) {\n // Første render\n setPreviousHeight(element.scrollHeight);\n return;\n }\n\n if (trigger === previousTriggerValue) {\n // Ingen endring\n return;\n }\n\n options?.onTransitionStart?.(elementRef);\n\n if (prefersReducedMotion) {\n options?.onTransitionEnd?.(elementRef); // make sure to call callback when animation is off\n return;\n }\n\n animateElement();\n }, [\n animateElement,\n trigger,\n previousTriggerValue,\n options,\n prefersReducedMotion,\n ]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: Vi vil trige med trigger\n useEffect(() => {\n runAnimation();\n }, [trigger, runAnimation]);\n\n useEffect(() => {\n const element = elementRef.current;\n if (element) {\n element.addEventListener(\"transitionend\", handleTransitionEnd);\n }\n\n return () => {\n if (element) {\n element.removeEventListener(\n \"transitionend\",\n handleTransitionEnd,\n );\n }\n };\n }, [handleTransitionEnd]);\n\n useEffect(() => {\n const r1 = raf1.current;\n const r2 = raf2.current;\n return () => {\n r1 && cancelAnimationFrame(r1);\n r2 && cancelAnimationFrame(r2);\n };\n }, []);\n\n return elementRef;\n}\n"],"names":["useAutoAnimatedHeight","trigger","options","previousTriggerValue","usePreviousValue","previousHeight","setPreviousHeight","useState","easing","timing","transition","tokens","motion","prefersReducedMotion","useBrowserPreferences","raf1","useRef","raf2","elementRef","handleTransitionEnd","useCallback","event","element","current","target","removeAttribute","onTransitionEnd","animateElement","newHeight","scrollHeight","requestAnimationFrame","style","removeProperty","setProperty","runAnimation","onTransitionStart","useEffect","addEventListener","removeEventListener","r1","r2","cancelAnimationFrame"],"mappings":"sRAiCO,SAASA,EACZC,EACAC,GAEA,MAAMC,EAAuBC,EAAiBH,IACvCI,EAAgBC,GAAqBC,EAAS,GAE/CC,EAASN,GAASM,QA5BN,WA6BZC,EAASP,GAASO,QA5BN,aA6BZC,EAAa,GAAGC,EAAOC,OAAOH,OAAOA,aAAkBE,EAAOC,OAAOJ,OAAOA,MAE1EK,qBAAAA,GAAyBC,IAE3BC,EAAOC,IACPC,EAAOD,IACPE,EAAaF,EAAU,MAEvBG,EAAsBC,EACvBC,IACG,MAAMC,EAAUJ,EAAWK,QAGvBD,GAAWD,EAAMG,SAAWF,IAC5BA,EAAQG,gBAAgB,SACxBvB,GAASwB,kBAAkBR,KAGnC,CAAChB,IAGCyB,EAAiBP,EAAY,KAC/B,MAAME,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMG,EAAYN,EAAQO,aAE1Bd,EAAKQ,QAAUO,sBAAsB,KAEjCR,EAAQS,MAAMC,eAAe,cAC7BV,EAAQS,MAAME,YAAY,SAAU,GAAG5B,OACvCiB,EAAQS,MAAME,YAAY,aAAc,UAExChB,EAAKM,QAAUO,sBAAsB,KAEjCR,EAAQS,MAAME,YAAY,aAAcvB,GACxCY,EAAQS,MAAME,YAAY,SAAU,GAAGL,WAI/CtB,EAAkBsB,IACnB,CAAClB,EAAYL,IAEV6B,EAAed,EAAY,KAC7B,MAAME,EAAUJ,EAAWK,QAE3B,GAAKD,EAEL,CAAA,QAA6B,IAAzBnB,EAGA,YADAG,EAAkBgB,EAAQO,cAI9B,GAAI5B,IAAYE,EAOhB,CAAA,GAFAD,GAASiC,oBAAoBjB,GAEzBL,EAEA,YADAX,GAASwB,kBAAkBR,GAI/BS,GAAA,CAAA,GACD,CACCA,EACA1B,EACAE,EACAD,EACAW,IAIJ,OAAAuB,EAAU,KACNF,KACD,CAACjC,EAASiC,IAEbE,EAAU,KACN,MAAMd,EAAUJ,EAAWK,QAC3B,OAAID,GACAA,EAAQe,iBAAiB,gBAAiBlB,GAGvC,KACCG,GACAA,EAAQgB,oBACJ,gBACAnB,KAIb,CAACA,IAEJiB,EAAU,KACN,MAAMG,EAAKxB,EAAKQ,QACViB,EAAKvB,EAAKM,QAChB,MAAO,KACHgB,GAAME,qBAAqBF,GAC3BC,GAAMC,qBAAqBD,KAEhC,IAEItB,CACX"}
1
+ {"version":3,"file":"useAutoAnimateHeight.js","sources":["../../../../src/hooks/useAnimatedHeight/useAutoAnimateHeight.ts"],"sourcesContent":["import {\n type RefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport tokens from \"../../tokens.js\";\nimport type { Easing, Timing } from \"../../utilities/types.js\";\nimport { useBrowserPreferences } from \"../useBrowserPreferences/useBrowserPreferences.js\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\n\nconst defaultEasing = \"standard\";\nconst defaultTiming = \"expressive\";\n\nexport type UseAutoAnimatedHeightOptions<T extends HTMLElement> = {\n easing?: Easing;\n /**\n * Overstyr standard timing\n * @default \"expressive\"\n */\n timing?: Timing;\n onTransitionStart?: (ref: RefObject<T | null>) => void;\n onTransitionEnd?: (ref: RefObject<T | null>) => void;\n};\n\n/**\n * Gjør det enklere å animere høyden på et element når innholdet endrer seg, men kan brukes på mer generelt grunnlag.\n * Hooken tar inn en triggerverdi, og når denne endrer seg animeres høyden på elementet dersom den har endret seg.\n * @param trigger verdien som brukes til å trigge animasjonen. Dersom denne endrer seg animeres høyden på elementet.\n * @param options konfigurasjon for animasjonen, og lyttere for når animasjonen starter og slutter\n * @returns en referanse til elementet som skal animeres\n */\nexport function useAutoAnimatedHeight<T extends HTMLElement = HTMLElement>(\n trigger: any,\n options?: UseAutoAnimatedHeightOptions<T>,\n) {\n const previousTriggerValue = usePreviousValue(trigger);\n const [previousHeight, setPreviousHeight] = useState(0);\n\n const easing = options?.easing || defaultEasing;\n const timing = options?.timing || defaultTiming;\n const transition = `${tokens.motion.timing[timing]} height ${tokens.motion.easing[easing]}`;\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const raf1 = useRef<number>();\n const raf2 = useRef<number>();\n const elementRef = useRef<T>(null);\n\n const handleTransitionEnd = useCallback(\n (event: TransitionEvent) => {\n const element = elementRef.current;\n\n // Ignore bubbling transitions from within container\n if (element && event.target === element) {\n element.removeAttribute(\"style\");\n options?.onTransitionEnd?.(elementRef);\n }\n },\n [options],\n );\n\n const animateElement = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const newHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Sett høyde tilbake til forrige høyde\n element.style.removeProperty(\"transition\");\n element.style.setProperty(\"height\", `${previousHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til kollapset høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${newHeight}px`);\n });\n });\n\n setPreviousHeight(newHeight);\n }, [transition, previousHeight]);\n\n const runAnimation = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n if (previousTriggerValue === undefined) {\n // Første render\n setPreviousHeight(element.scrollHeight);\n return;\n }\n\n if (trigger === previousTriggerValue) {\n // Ingen endring\n return;\n }\n\n options?.onTransitionStart?.(elementRef);\n\n if (prefersReducedMotion) {\n options?.onTransitionEnd?.(elementRef); // make sure to call callback when animation is off\n return;\n }\n\n animateElement();\n }, [\n animateElement,\n trigger,\n previousTriggerValue,\n options,\n prefersReducedMotion,\n ]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: Vi vil trige med trigger\n useEffect(() => {\n runAnimation();\n }, [trigger, runAnimation]);\n\n useEffect(() => {\n const element = elementRef.current;\n if (element) {\n element.addEventListener(\"transitionend\", handleTransitionEnd);\n }\n\n return () => {\n if (element) {\n element.removeEventListener(\n \"transitionend\",\n handleTransitionEnd,\n );\n }\n };\n }, [handleTransitionEnd]);\n\n useEffect(() => {\n const r1 = raf1.current;\n const r2 = raf2.current;\n return () => {\n r1 && cancelAnimationFrame(r1);\n r2 && cancelAnimationFrame(r2);\n };\n }, []);\n\n return elementRef;\n}\n"],"names":["useAutoAnimatedHeight","trigger","options","previousTriggerValue","usePreviousValue","previousHeight","setPreviousHeight","useState","easing","timing","transition","tokens","motion","prefersReducedMotion","useBrowserPreferences","raf1","useRef","raf2","elementRef","handleTransitionEnd","useCallback","event","element","current","target","removeAttribute","onTransitionEnd","animateElement","newHeight","scrollHeight","requestAnimationFrame","style","removeProperty","setProperty","runAnimation","onTransitionStart","useEffect","addEventListener","removeEventListener","r1","r2","cancelAnimationFrame"],"mappings":"iRAiCO,SAASA,EACZC,EACAC,GAEA,MAAMC,EAAuBC,EAAiBH,IACvCI,EAAgBC,GAAqBC,EAAS,GAE/CC,EAASN,GAASM,QA5BN,WA6BZC,EAASP,GAASO,QA5BN,aA6BZC,EAAa,GAAGC,EAAOC,OAAOH,OAAOA,aAAkBE,EAAOC,OAAOJ,OAAOA,MAE1EK,qBAAAA,GAAyBC,IAE3BC,EAAOC,IACPC,EAAOD,IACPE,EAAaF,EAAU,MAEvBG,EAAsBC,EACvBC,IACG,MAAMC,EAAUJ,EAAWK,QAGvBD,GAAWD,EAAMG,SAAWF,IAC5BA,EAAQG,gBAAgB,SACxBvB,GAASwB,kBAAkBR,KAGnC,CAAChB,IAGCyB,EAAiBP,EAAY,KAC/B,MAAME,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMG,EAAYN,EAAQO,aAE1Bd,EAAKQ,QAAUO,sBAAsB,KAEjCR,EAAQS,MAAMC,eAAe,cAC7BV,EAAQS,MAAME,YAAY,SAAU,GAAG5B,OACvCiB,EAAQS,MAAME,YAAY,aAAc,UAExChB,EAAKM,QAAUO,sBAAsB,KAEjCR,EAAQS,MAAME,YAAY,aAAcvB,GACxCY,EAAQS,MAAME,YAAY,SAAU,GAAGL,WAI/CtB,EAAkBsB,IACnB,CAAClB,EAAYL,IAEV6B,EAAed,EAAY,KAC7B,MAAME,EAAUJ,EAAWK,QAE3B,GAAKD,EAEL,CAAA,QAA6B,IAAzBnB,EAGA,YADAG,EAAkBgB,EAAQO,cAI9B,GAAI5B,IAAYE,EAOhB,CAAA,GAFAD,GAASiC,oBAAoBjB,GAEzBL,EAEA,YADAX,GAASwB,kBAAkBR,GAI/BS,GAAA,CAAA,GACD,CACCA,EACA1B,EACAE,EACAD,EACAW,IAIJ,OAAAuB,EAAU,KACNF,KACD,CAACjC,EAASiC,IAEbE,EAAU,KACN,MAAMd,EAAUJ,EAAWK,QAC3B,OAAID,GACAA,EAAQe,iBAAiB,gBAAiBlB,GAGvC,KACCG,GACAA,EAAQgB,oBACJ,gBACAnB,KAIb,CAACA,IAEJiB,EAAU,KACN,MAAMG,EAAKxB,EAAKQ,QACViB,EAAKvB,EAAKM,QAChB,MAAO,KACHgB,GAAME,qBAAqBF,GAC3BC,GAAMC,qBAAqBD,KAEhC,IAEItB,CACX"}
@@ -11,5 +11,5 @@ export interface UseAriaLiveRegionOptions {
11
11
  * @returns
12
12
  */
13
13
  export declare function useAriaLiveRegion(watch: unknown | unknown[], options?: UseAriaLiveRegionOptions): {
14
- "aria-live": "polite" | "assertive" | "off" | undefined;
14
+ "aria-live": "off" | "assertive" | "polite" | undefined;
15
15
  };
@@ -1,4 +1,4 @@
1
- import { ColorScheme } from '../../core/types.js';
1
+ import { ColorScheme } from '../../utilities/types.js';
2
2
  type BrowserPreferences = {
3
3
  prefersReducedMotion: boolean;
4
4
  prefersColorScheme: ColorScheme;
@@ -1 +1 @@
1
- {"version":3,"file":"useBrowserPreferences.js","sources":["../../../../src/hooks/useBrowserPreferences/useBrowserPreferences.tsx"],"sourcesContent":["import { type Reducer, useEffect, useReducer, useState } from \"react\";\nimport type { ColorScheme } from \"../../core/types.js\";\nimport {\n addMediaQueryListener,\n getInitialMediaQueryMatch,\n removeMediaQueryListener,\n} from \"../mediaQueryUtils.js\";\n\ntype BrowserPreferences = {\n prefersReducedMotion: boolean;\n prefersColorScheme: ColorScheme;\n forcedColors: boolean;\n};\n\nconst ActionType = {\n PrefersColorScheme: \"COLOR_SCHEME_CHANGED\",\n PrefersReducedMotion: \"REDUCED_MOTION_CHANGED\",\n ForcedColors: \"FORCED_COLORS_CHANGED\",\n} as const;\n\ntype Action =\n | {\n type: typeof ActionType.PrefersColorScheme;\n value: ColorScheme;\n }\n | {\n type: typeof ActionType.PrefersReducedMotion;\n value: boolean;\n }\n | {\n type: typeof ActionType.ForcedColors;\n value: boolean;\n };\n\nconst PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nconst PREFERS_LIGHT_COLOR_SCHEME = \"(prefers-color-scheme: light)\";\nconst FORCED_COLORS = \"(forced-colors: active)\";\n\nconst initialState: BrowserPreferences = {\n prefersReducedMotion: false,\n prefersColorScheme: \"light\",\n forcedColors: false,\n};\n\nconst reducer: Reducer<BrowserPreferences, Action> = (state, action) => {\n switch (action.type) {\n case ActionType.PrefersColorScheme:\n return {\n ...state,\n prefersColorScheme: action.value,\n };\n case ActionType.PrefersReducedMotion:\n return {\n ...state,\n prefersReducedMotion: action.value,\n };\n case ActionType.ForcedColors:\n return {\n ...state,\n forcedColors: action.value,\n };\n default:\n return state;\n }\n};\n\n/**\n * Hook som gir informasjon om brukerens foretrukne konfigurasjon.\n * @returns Objekt med informasjon om brukerens foretrukne tema (lyst vs mørkt), redusert bevegelse, og høykontrast (forced colors).\n */\nexport const useBrowserPreferences = (): BrowserPreferences => {\n const [hasMounted, setHasMounted] = useState(false);\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n useEffect(() => {\n setHasMounted(true);\n const prefersReducedMotion = getInitialMediaQueryMatch(\n PREFERS_REDUCED_MOTION,\n );\n const prefersColorScheme = getInitialMediaQueryMatch(\n PREFERS_LIGHT_COLOR_SCHEME,\n )\n ? \"light\"\n : \"dark\";\n const forcedColors = getInitialMediaQueryMatch(FORCED_COLORS);\n dispatch({\n type: ActionType.PrefersReducedMotion,\n value: prefersReducedMotion,\n });\n dispatch({\n type: ActionType.PrefersColorScheme,\n value: prefersColorScheme,\n });\n dispatch({ type: ActionType.ForcedColors, value: forcedColors });\n }, []);\n\n useEffect(() => {\n if (!hasMounted || !window.matchMedia) {\n return;\n }\n const onPrefersReducedMotionChange = (e: MediaQueryListEvent) => {\n dispatch({\n type: ActionType.PrefersReducedMotion,\n value: e.matches,\n });\n };\n const onPrefersColorSchemeChange = (e: MediaQueryListEvent) => {\n dispatch({\n type: ActionType.PrefersColorScheme,\n value: e.matches ? \"light\" : \"dark\",\n });\n };\n const onForcedColorsChange = (e: MediaQueryListEvent) => {\n dispatch({ type: ActionType.ForcedColors, value: e.matches });\n };\n\n addMediaQueryListener(\n window.matchMedia(PREFERS_REDUCED_MOTION),\n onPrefersReducedMotionChange,\n );\n addMediaQueryListener(\n window.matchMedia(PREFERS_LIGHT_COLOR_SCHEME),\n onPrefersColorSchemeChange,\n );\n addMediaQueryListener(\n window.matchMedia(FORCED_COLORS),\n onForcedColorsChange,\n );\n\n return () => {\n removeMediaQueryListener(\n window.matchMedia(PREFERS_REDUCED_MOTION),\n onPrefersReducedMotionChange,\n );\n removeMediaQueryListener(\n window.matchMedia(PREFERS_LIGHT_COLOR_SCHEME),\n onPrefersColorSchemeChange,\n );\n removeMediaQueryListener(\n window.matchMedia(FORCED_COLORS),\n onForcedColorsChange,\n );\n };\n }, [hasMounted]);\n\n return { ...state };\n};\n"],"names":["ActionType","PREFERS_REDUCED_MOTION","PREFERS_LIGHT_COLOR_SCHEME","FORCED_COLORS","initialState","prefersReducedMotion","prefersColorScheme","forcedColors","reducer","state","action","type","value","useBrowserPreferences","hasMounted","setHasMounted","useState","dispatch","useReducer","useEffect","getInitialMediaQueryMatch","window","matchMedia","onPrefersReducedMotionChange","e","matches","onPrefersColorSchemeChange","onForcedColorsChange","addMediaQueryListener","removeMediaQueryListener"],"mappings":"2LAcA,MAAMA,EACkB,uBADlBA,EAEoB,yBAFpBA,EAGY,wBAiBZC,EAAyB,mCACzBC,EAA6B,gCAC7BC,EAAgB,0BAEhBC,EAAmC,CACrCC,sBAAsB,EACtBC,mBAAoB,QACpBC,cAAc,GAGZC,EAA+C,CAACC,EAAOC,KACzD,OAAQA,EAAOC,MACX,KAAKX,EACD,MAAO,IACAS,EACHH,mBAAoBI,EAAOE,OAEnC,KAAKZ,EACD,MAAO,IACAS,EACHJ,qBAAsBK,EAAOE,OAErC,KAAKZ,EACD,MAAO,IACAS,EACHF,aAAcG,EAAOE,OAE7B,QACI,OAAOH,IAQNI,EAAwB,KACjC,MAAOC,EAAYC,GAAiBC,GAAS,IAEtCP,EAAOQ,GAAYC,EAAWV,EAASJ,GAE9C,OAAAe,EAAU,KACNJ,GAAc,GACd,MAAMV,EAAuBe,EACzBnB,GAEEK,EAAqBc,EACvBlB,GAEE,QACA,OACAK,EAAea,EAA0BjB,GAC/Cc,EAAS,CACLN,KAAMX,EACNY,MAAOP,IAEXY,EAAS,CACLN,KAAMX,EACNY,MAAON,IAEXW,EAAS,CAAEN,KAAMX,EAAyBY,MAAOL,KAClD,IAEHY,EAAU,KACN,IAAKL,IAAeO,OAAOC,WACvB,OAEJ,MAAMC,EAAgCC,IAClCP,EAAS,CACLN,KAAMX,EACNY,MAAOY,EAAEC,WAGXC,EAA8BF,IAChCP,EAAS,CACLN,KAAMX,EACNY,MAAOY,EAAEC,QAAU,QAAU,UAG/BE,EAAwBH,IAC1BP,EAAS,CAAEN,KAAMX,EAAyBY,MAAOY,EAAEC,WAGvD,OAAAG,EACIP,OAAOC,WAAWrB,GAClBsB,GAEJK,EACIP,OAAOC,WAAWpB,GAClBwB,GAEJE,EACIP,OAAOC,WAAWnB,GAClBwB,GAGG,KACHE,EACIR,OAAOC,WAAWrB,GAClBsB,GAEJM,EACIR,OAAOC,WAAWpB,GAClBwB,GAEJG,EACIR,OAAOC,WAAWnB,GAClBwB,KAGT,CAACb,IAEG,IAAKL"}
1
+ {"version":3,"file":"useBrowserPreferences.js","sources":["../../../../src/hooks/useBrowserPreferences/useBrowserPreferences.tsx"],"sourcesContent":["import { type Reducer, useEffect, useReducer, useState } from \"react\";\nimport type { ColorScheme } from \"../../utilities/types.js\";\nimport {\n addMediaQueryListener,\n getInitialMediaQueryMatch,\n removeMediaQueryListener,\n} from \"../mediaQueryUtils.js\";\n\ntype BrowserPreferences = {\n prefersReducedMotion: boolean;\n prefersColorScheme: ColorScheme;\n forcedColors: boolean;\n};\n\nconst ActionType = {\n PrefersColorScheme: \"COLOR_SCHEME_CHANGED\",\n PrefersReducedMotion: \"REDUCED_MOTION_CHANGED\",\n ForcedColors: \"FORCED_COLORS_CHANGED\",\n} as const;\n\ntype Action =\n | {\n type: typeof ActionType.PrefersColorScheme;\n value: ColorScheme;\n }\n | {\n type: typeof ActionType.PrefersReducedMotion;\n value: boolean;\n }\n | {\n type: typeof ActionType.ForcedColors;\n value: boolean;\n };\n\nconst PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nconst PREFERS_LIGHT_COLOR_SCHEME = \"(prefers-color-scheme: light)\";\nconst FORCED_COLORS = \"(forced-colors: active)\";\n\nconst initialState: BrowserPreferences = {\n prefersReducedMotion: false,\n prefersColorScheme: \"light\",\n forcedColors: false,\n};\n\nconst reducer: Reducer<BrowserPreferences, Action> = (state, action) => {\n switch (action.type) {\n case ActionType.PrefersColorScheme:\n return {\n ...state,\n prefersColorScheme: action.value,\n };\n case ActionType.PrefersReducedMotion:\n return {\n ...state,\n prefersReducedMotion: action.value,\n };\n case ActionType.ForcedColors:\n return {\n ...state,\n forcedColors: action.value,\n };\n default:\n return state;\n }\n};\n\n/**\n * Hook som gir informasjon om brukerens foretrukne konfigurasjon.\n * @returns Objekt med informasjon om brukerens foretrukne tema (lyst vs mørkt), redusert bevegelse, og høykontrast (forced colors).\n */\nexport const useBrowserPreferences = (): BrowserPreferences => {\n const [hasMounted, setHasMounted] = useState(false);\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n useEffect(() => {\n setHasMounted(true);\n const prefersReducedMotion = getInitialMediaQueryMatch(\n PREFERS_REDUCED_MOTION,\n );\n const prefersColorScheme = getInitialMediaQueryMatch(\n PREFERS_LIGHT_COLOR_SCHEME,\n )\n ? \"light\"\n : \"dark\";\n const forcedColors = getInitialMediaQueryMatch(FORCED_COLORS);\n dispatch({\n type: ActionType.PrefersReducedMotion,\n value: prefersReducedMotion,\n });\n dispatch({\n type: ActionType.PrefersColorScheme,\n value: prefersColorScheme,\n });\n dispatch({ type: ActionType.ForcedColors, value: forcedColors });\n }, []);\n\n useEffect(() => {\n if (!hasMounted || !window.matchMedia) {\n return;\n }\n const onPrefersReducedMotionChange = (e: MediaQueryListEvent) => {\n dispatch({\n type: ActionType.PrefersReducedMotion,\n value: e.matches,\n });\n };\n const onPrefersColorSchemeChange = (e: MediaQueryListEvent) => {\n dispatch({\n type: ActionType.PrefersColorScheme,\n value: e.matches ? \"light\" : \"dark\",\n });\n };\n const onForcedColorsChange = (e: MediaQueryListEvent) => {\n dispatch({ type: ActionType.ForcedColors, value: e.matches });\n };\n\n addMediaQueryListener(\n window.matchMedia(PREFERS_REDUCED_MOTION),\n onPrefersReducedMotionChange,\n );\n addMediaQueryListener(\n window.matchMedia(PREFERS_LIGHT_COLOR_SCHEME),\n onPrefersColorSchemeChange,\n );\n addMediaQueryListener(\n window.matchMedia(FORCED_COLORS),\n onForcedColorsChange,\n );\n\n return () => {\n removeMediaQueryListener(\n window.matchMedia(PREFERS_REDUCED_MOTION),\n onPrefersReducedMotionChange,\n );\n removeMediaQueryListener(\n window.matchMedia(PREFERS_LIGHT_COLOR_SCHEME),\n onPrefersColorSchemeChange,\n );\n removeMediaQueryListener(\n window.matchMedia(FORCED_COLORS),\n onForcedColorsChange,\n );\n };\n }, [hasMounted]);\n\n return { ...state };\n};\n"],"names":["ActionType","PREFERS_REDUCED_MOTION","PREFERS_LIGHT_COLOR_SCHEME","FORCED_COLORS","initialState","prefersReducedMotion","prefersColorScheme","forcedColors","reducer","state","action","type","value","useBrowserPreferences","hasMounted","setHasMounted","useState","dispatch","useReducer","useEffect","getInitialMediaQueryMatch","window","matchMedia","onPrefersReducedMotionChange","e","matches","onPrefersColorSchemeChange","onForcedColorsChange","addMediaQueryListener","removeMediaQueryListener"],"mappings":"2LAcA,MAAMA,EACkB,uBADlBA,EAEoB,yBAFpBA,EAGY,wBAiBZC,EAAyB,mCACzBC,EAA6B,gCAC7BC,EAAgB,0BAEhBC,EAAmC,CACrCC,sBAAsB,EACtBC,mBAAoB,QACpBC,cAAc,GAGZC,EAA+C,CAACC,EAAOC,KACzD,OAAQA,EAAOC,MACX,KAAKX,EACD,MAAO,IACAS,EACHH,mBAAoBI,EAAOE,OAEnC,KAAKZ,EACD,MAAO,IACAS,EACHJ,qBAAsBK,EAAOE,OAErC,KAAKZ,EACD,MAAO,IACAS,EACHF,aAAcG,EAAOE,OAE7B,QACI,OAAOH,IAQNI,EAAwB,KACjC,MAAOC,EAAYC,GAAiBC,GAAS,IAEtCP,EAAOQ,GAAYC,EAAWV,EAASJ,GAE9C,OAAAe,EAAU,KACNJ,GAAc,GACd,MAAMV,EAAuBe,EACzBnB,GAEEK,EAAqBc,EACvBlB,GAEE,QACA,OACAK,EAAea,EAA0BjB,GAC/Cc,EAAS,CACLN,KAAMX,EACNY,MAAOP,IAEXY,EAAS,CACLN,KAAMX,EACNY,MAAON,IAEXW,EAAS,CAAEN,KAAMX,EAAyBY,MAAOL,KAClD,IAEHY,EAAU,KACN,IAAKL,IAAeO,OAAOC,WACvB,OAEJ,MAAMC,EAAgCC,IAClCP,EAAS,CACLN,KAAMX,EACNY,MAAOY,EAAEC,WAGXC,EAA8BF,IAChCP,EAAS,CACLN,KAAMX,EACNY,MAAOY,EAAEC,QAAU,QAAU,UAG/BE,EAAwBH,IAC1BP,EAAS,CAAEN,KAAMX,EAAyBY,MAAOY,EAAEC,WAGvD,OAAAG,EACIP,OAAOC,WAAWrB,GAClBsB,GAEJK,EACIP,OAAOC,WAAWpB,GAClBwB,GAEJE,EACIP,OAAOC,WAAWnB,GAClBwB,GAGG,KACHE,EACIR,OAAOC,WAAWrB,GAClBsB,GAEJM,EACIR,OAAOC,WAAWpB,GAClBwB,GAEJG,EACIR,OAAOC,WAAWnB,GAClBwB,KAGT,CAACb,IAEG,IAAKL"}
@@ -1,2 +1,2 @@
1
- import{useState as e,useReducer as i,useEffect as t,useCallback as a}from"react";import r from"../../core/tokens.js";import{getInitialMediaQueryMatch as s,addMediaQueryListener as o,removeMediaQueryListener as n}from"../mediaQueryUtils.js";import{reducer as c,ActionType as m}from"./state.js";const{breakpoint:d}=r,p=e=>Number.parseInt(e.replace("px","")),u={isSmallDevice:`(max-width: ${p(d.medium)-1}px)`,isMediumDevice:`(min-width: ${d.medium}) and (max-width: ${p(d.large)-1}px)`,isLargeDevice:`(min-width: ${d.large}) and (max-width: ${p(d.xl)-1}px)`,isXlDevice:`(min-width: ${d.xl})`,isPortrait:"(orientation: portrait)",isLandscape:"(orientation: landscape)"},l=e=>({type:"isLandscape"===e||"isPortrait"===e?m.orientation:m.deviceSize,property:e}),f=()=>{const[r,m]=e(!1),[d,p]=i(c,{isSmallDevice:!1,isMediumDevice:!1,isLargeDevice:!1,isXlDevice:!1,isLandscape:!1,isPortrait:!1});t(()=>{m(!0);const e=Object.entries(u).map(([e,i])=>[e,s(i)]);for(const[i,t]of e)t&&p(l(i))},[]);const f=a(e=>i=>{requestAnimationFrame(()=>{i.matches&&p(l(e))})},[]);return t(()=>{if(!r||!window.matchMedia)return;const e=[];for(const[i,t]of Object.entries(u)){const a=window.matchMedia(t),r=f(i);e.push([a,r]),o(a,r)}return()=>{for(const[i,t]of e)n(i,t)}},[f,r]),{...d}};export{f as useScreen};
1
+ import{useState as e,useReducer as i,useEffect as t,useCallback as a}from"react";import s from"../../tokens.js";import{getInitialMediaQueryMatch as r,addMediaQueryListener as o,removeMediaQueryListener as n}from"../mediaQueryUtils.js";import{reducer as c,ActionType as m}from"./state.js";const{breakpoint:d}=s,p=e=>Number.parseInt(e.replace("px","")),u={isSmallDevice:`(max-width: ${p(d.medium)-1}px)`,isMediumDevice:`(min-width: ${d.medium}) and (max-width: ${p(d.large)-1}px)`,isLargeDevice:`(min-width: ${d.large}) and (max-width: ${p(d.xl)-1}px)`,isXlDevice:`(min-width: ${d.xl})`,isPortrait:"(orientation: portrait)",isLandscape:"(orientation: landscape)"},l=e=>({type:"isLandscape"===e||"isPortrait"===e?m.orientation:m.deviceSize,property:e}),f=()=>{const[s,m]=e(!1),[d,p]=i(c,{isSmallDevice:!1,isMediumDevice:!1,isLargeDevice:!1,isXlDevice:!1,isLandscape:!1,isPortrait:!1});t(()=>{m(!0);const e=Object.entries(u).map(([e,i])=>[e,r(i)]);for(const[i,t]of e)t&&p(l(i))},[]);const f=a(e=>i=>{requestAnimationFrame(()=>{i.matches&&p(l(e))})},[]);return t(()=>{if(!s||!window.matchMedia)return;const e=[];for(const[i,t]of Object.entries(u)){const a=window.matchMedia(t),s=f(i);e.push([a,s]),o(a,s)}return()=>{for(const[i,t]of e)n(i,t)}},[f,s]),{...d}};export{f as useScreen};
2
2
  //# sourceMappingURL=useScreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScreen.js","sources":["../../../../src/hooks/useScreen/useScreen.ts"],"sourcesContent":["import { useCallback, useEffect, useReducer, useState } from \"react\";\nimport { tokens } from \"../../core/index.js\";\nimport {\n addMediaQueryListener,\n getInitialMediaQueryMatch,\n removeMediaQueryListener,\n} from \"../mediaQueryUtils.js\";\nimport {\n ActionType,\n type ScreenAction,\n type ScreenState,\n reducer,\n} from \"./state.js\";\n\nconst { breakpoint } = tokens;\n\nconst breakpointsAsNumber = (breakpoint: string): number =>\n Number.parseInt(breakpoint.replace(\"px\", \"\"));\n\nconst MEDIA_RULES: Record<keyof ScreenState, string> = {\n isSmallDevice: `(max-width: ${\n breakpointsAsNumber(breakpoint.medium) - 1\n }px)`,\n isMediumDevice: `(min-width: ${breakpoint.medium}) and (max-width: ${\n breakpointsAsNumber(breakpoint.large) - 1\n }px)`,\n isLargeDevice: `(min-width: ${breakpoint.large}) and (max-width: ${\n breakpointsAsNumber(breakpoint.xl) - 1\n }px)`,\n isXlDevice: `(min-width: ${breakpoint.xl})`,\n isPortrait: \"(orientation: portrait)\",\n isLandscape: \"(orientation: landscape)\",\n};\n\nconst createAction = (property: keyof ScreenState): ScreenAction => ({\n type:\n property === \"isLandscape\" || property === \"isPortrait\"\n ? ActionType.orientation\n : ActionType.deviceSize,\n property,\n});\n\n/**\n * Finn størrelsen og orienteringen til skjermen.\n * @returns Et objekt med boolean som indikerer om skjermstørrelsen er liten, medium, stor eller ekstra stor, og om skjermen er i portrett- eller landskapsmodus.\n */\nexport const useScreen = (): ScreenState => {\n const [hasMounted, setHasMounted] = useState(false);\n\n const [device, deviceDispatch] = useReducer(reducer, {\n isSmallDevice: false,\n isMediumDevice: false,\n isLargeDevice: false,\n isXlDevice: false,\n isLandscape: false,\n isPortrait: false,\n });\n\n useEffect(() => {\n setHasMounted(true);\n const initialMatches = Object.entries(MEDIA_RULES).map(\n ([key, rule]) => [key, getInitialMediaQueryMatch(rule)],\n );\n\n for (const [key, value] of initialMatches) {\n if (value) {\n deviceDispatch(createAction(key as keyof ScreenState));\n }\n }\n }, []);\n\n const createListener = useCallback(\n (key: keyof ScreenState) => (e: MediaQueryListEvent) => {\n requestAnimationFrame(() => {\n if (e.matches) {\n deviceDispatch(createAction(key));\n }\n });\n },\n [],\n );\n\n useEffect(() => {\n if (!hasMounted || !window.matchMedia) {\n return;\n }\n const eventListenerPairs: Array<\n [MediaQueryList, (e: MediaQueryListEvent) => void]\n > = [];\n\n for (const [key, rule] of Object.entries(MEDIA_RULES)) {\n const queryList = window.matchMedia(rule);\n const listener = createListener(key as keyof ScreenState);\n eventListenerPairs.push([queryList, listener]);\n addMediaQueryListener(queryList, listener);\n }\n\n return () => {\n for (const [queryList, listener] of eventListenerPairs) {\n removeMediaQueryListener(queryList, listener);\n }\n };\n }, [createListener, hasMounted]);\n\n return { ...device };\n};\n"],"names":["breakpoint","tokens","breakpointsAsNumber","Number","parseInt","replace","MEDIA_RULES","isSmallDevice","medium","isMediumDevice","large","isLargeDevice","xl","isXlDevice","isPortrait","isLandscape","createAction","property","type","ActionType","orientation","deviceSize","useScreen","hasMounted","setHasMounted","useState","device","deviceDispatch","useReducer","reducer","useEffect","initialMatches","Object","entries","map","key","rule","getInitialMediaQueryMatch","value","createListener","useCallback","e","requestAnimationFrame","matches","window","matchMedia","eventListenerPairs","queryList","listener","push","addMediaQueryListener","removeMediaQueryListener"],"mappings":"qSAcA,MAAQA,WAAAA,GAAeC,EAEjBC,EAAuBF,GACzBG,OAAOC,SAASJ,EAAWK,QAAQ,KAAM,KAEvCC,EAAiD,CACnDC,cAAe,eACXL,EAAoBF,EAAWQ,QAAU,OAE7CC,eAAgB,eAAeT,EAAWQ,2BACtCN,EAAoBF,EAAWU,OAAS,OAE5CC,cAAe,eAAeX,EAAWU,0BACrCR,EAAoBF,EAAWY,IAAM,OAEzCC,WAAY,eAAeb,EAAWY,MACtCE,WAAY,0BACZC,YAAa,4BAGXC,EAAgBC,IAAAA,CAClBC,KACiB,gBAAbD,GAA2C,eAAbA,EACxBE,EAAWC,YACXD,EAAWE,WACrBJ,SAAAA,IAOSK,EAAY,KACrB,MAAOC,EAAYC,GAAiBC,GAAS,IAEtCC,EAAQC,GAAkBC,EAAWC,EAAS,CACjDtB,eAAe,EACfE,gBAAgB,EAChBE,eAAe,EACfE,YAAY,EACZE,aAAa,EACbD,YAAY,IAGhBgB,EAAU,KACNN,GAAc,GACd,MAAMO,EAAiBC,OAAOC,QAAQ3B,GAAa4B,IAC/C,EAAEC,EAAKC,KAAU,CAACD,EAAKE,EAA0BD,KAGrD,IAAA,MAAYD,EAAKG,KAAUP,EACnBO,GACAX,EAAeX,EAAamB,KAGrC,IAEH,MAAMI,EAAiBC,EAClBL,GAA4BM,IACzBC,sBAAsB,KACdD,EAAEE,SACFhB,EAAeX,EAAamB,OAIxC,IAGJ,OAAAL,EAAU,KACN,IAAKP,IAAeqB,OAAOC,WACvB,OAEJ,MAAMC,EAEF,GAEJ,IAAA,MAAYX,EAAKC,KAASJ,OAAOC,QAAQ3B,GAAc,CACnD,MAAMyC,EAAYH,OAAOC,WAAWT,GAC9BY,EAAWT,EAAeJ,GAChCW,EAAmBG,KAAK,CAACF,EAAWC,IACpCE,EAAsBH,EAAWC,EACrC,CAEA,MAAO,KACH,IAAA,MAAYD,EAAWC,KAAaF,EAChCK,EAAyBJ,EAAWC,KAG7C,CAACT,EAAgBhB,IAEb,IAAKG"}
1
+ {"version":3,"file":"useScreen.js","sources":["../../../../src/hooks/useScreen/useScreen.ts"],"sourcesContent":["import { useCallback, useEffect, useReducer, useState } from \"react\";\nimport tokens from \"../../tokens.js\";\nimport {\n addMediaQueryListener,\n getInitialMediaQueryMatch,\n removeMediaQueryListener,\n} from \"../mediaQueryUtils.js\";\nimport {\n ActionType,\n type ScreenAction,\n type ScreenState,\n reducer,\n} from \"./state.js\";\n\nconst { breakpoint } = tokens;\n\nconst breakpointsAsNumber = (breakpoint: string): number =>\n Number.parseInt(breakpoint.replace(\"px\", \"\"));\n\nconst MEDIA_RULES: Record<keyof ScreenState, string> = {\n isSmallDevice: `(max-width: ${\n breakpointsAsNumber(breakpoint.medium) - 1\n }px)`,\n isMediumDevice: `(min-width: ${breakpoint.medium}) and (max-width: ${\n breakpointsAsNumber(breakpoint.large) - 1\n }px)`,\n isLargeDevice: `(min-width: ${breakpoint.large}) and (max-width: ${\n breakpointsAsNumber(breakpoint.xl) - 1\n }px)`,\n isXlDevice: `(min-width: ${breakpoint.xl})`,\n isPortrait: \"(orientation: portrait)\",\n isLandscape: \"(orientation: landscape)\",\n};\n\nconst createAction = (property: keyof ScreenState): ScreenAction => ({\n type:\n property === \"isLandscape\" || property === \"isPortrait\"\n ? ActionType.orientation\n : ActionType.deviceSize,\n property,\n});\n\n/**\n * Finn størrelsen og orienteringen til skjermen.\n * @returns Et objekt med boolean som indikerer om skjermstørrelsen er liten, medium, stor eller ekstra stor, og om skjermen er i portrett- eller landskapsmodus.\n */\nexport const useScreen = (): ScreenState => {\n const [hasMounted, setHasMounted] = useState(false);\n\n const [device, deviceDispatch] = useReducer(reducer, {\n isSmallDevice: false,\n isMediumDevice: false,\n isLargeDevice: false,\n isXlDevice: false,\n isLandscape: false,\n isPortrait: false,\n });\n\n useEffect(() => {\n setHasMounted(true);\n const initialMatches = Object.entries(MEDIA_RULES).map(\n ([key, rule]) => [key, getInitialMediaQueryMatch(rule)],\n );\n\n for (const [key, value] of initialMatches) {\n if (value) {\n deviceDispatch(createAction(key as keyof ScreenState));\n }\n }\n }, []);\n\n const createListener = useCallback(\n (key: keyof ScreenState) => (e: MediaQueryListEvent) => {\n requestAnimationFrame(() => {\n if (e.matches) {\n deviceDispatch(createAction(key));\n }\n });\n },\n [],\n );\n\n useEffect(() => {\n if (!hasMounted || !window.matchMedia) {\n return;\n }\n const eventListenerPairs: Array<\n [MediaQueryList, (e: MediaQueryListEvent) => void]\n > = [];\n\n for (const [key, rule] of Object.entries(MEDIA_RULES)) {\n const queryList = window.matchMedia(rule);\n const listener = createListener(key as keyof ScreenState);\n eventListenerPairs.push([queryList, listener]);\n addMediaQueryListener(queryList, listener);\n }\n\n return () => {\n for (const [queryList, listener] of eventListenerPairs) {\n removeMediaQueryListener(queryList, listener);\n }\n };\n }, [createListener, hasMounted]);\n\n return { ...device };\n};\n"],"names":["breakpoint","tokens","breakpointsAsNumber","Number","parseInt","replace","MEDIA_RULES","isSmallDevice","medium","isMediumDevice","large","isLargeDevice","xl","isXlDevice","isPortrait","isLandscape","createAction","property","type","ActionType","orientation","deviceSize","useScreen","hasMounted","setHasMounted","useState","device","deviceDispatch","useReducer","reducer","useEffect","initialMatches","Object","entries","map","key","rule","getInitialMediaQueryMatch","value","createListener","useCallback","e","requestAnimationFrame","matches","window","matchMedia","eventListenerPairs","queryList","listener","push","addMediaQueryListener","removeMediaQueryListener"],"mappings":"gSAcA,MAAQA,WAAAA,GAAeC,EAEjBC,EAAuBF,GACzBG,OAAOC,SAASJ,EAAWK,QAAQ,KAAM,KAEvCC,EAAiD,CACnDC,cAAe,eACXL,EAAoBF,EAAWQ,QAAU,OAE7CC,eAAgB,eAAeT,EAAWQ,2BACtCN,EAAoBF,EAAWU,OAAS,OAE5CC,cAAe,eAAeX,EAAWU,0BACrCR,EAAoBF,EAAWY,IAAM,OAEzCC,WAAY,eAAeb,EAAWY,MACtCE,WAAY,0BACZC,YAAa,4BAGXC,EAAgBC,IAAAA,CAClBC,KACiB,gBAAbD,GAA2C,eAAbA,EACxBE,EAAWC,YACXD,EAAWE,WACrBJ,SAAAA,IAOSK,EAAY,KACrB,MAAOC,EAAYC,GAAiBC,GAAS,IAEtCC,EAAQC,GAAkBC,EAAWC,EAAS,CACjDtB,eAAe,EACfE,gBAAgB,EAChBE,eAAe,EACfE,YAAY,EACZE,aAAa,EACbD,YAAY,IAGhBgB,EAAU,KACNN,GAAc,GACd,MAAMO,EAAiBC,OAAOC,QAAQ3B,GAAa4B,IAC/C,EAAEC,EAAKC,KAAU,CAACD,EAAKE,EAA0BD,KAGrD,IAAA,MAAYD,EAAKG,KAAUP,EACnBO,GACAX,EAAeX,EAAamB,KAGrC,IAEH,MAAMI,EAAiBC,EAClBL,GAA4BM,IACzBC,sBAAsB,KACdD,EAAEE,SACFhB,EAAeX,EAAamB,OAIxC,IAGJ,OAAAL,EAAU,KACN,IAAKP,IAAeqB,OAAOC,WACvB,OAEJ,MAAMC,EAEF,GAEJ,IAAA,MAAYX,EAAKC,KAASJ,OAAOC,QAAQ3B,GAAc,CACnD,MAAMyC,EAAYH,OAAOC,WAAWT,GAC9BY,EAAWT,EAAeJ,GAChCW,EAAmBG,KAAK,CAACF,EAAWC,IACpCE,EAAsBH,EAAWC,EACrC,CAEA,MAAO,KACH,IAAA,MAAYD,EAAWC,KAAaF,EAChCK,EAAyBJ,EAAWC,KAG7C,CAACT,EAAgBhB,IAEb,IAAKG"}
@@ -1,2 +1,2 @@
1
- import{k as o}from"../../../index-DOHQmuhD.js";import t from"tailwindcss/plugin.js";import s from"../../core/tokens.js";const{breakpoint:e,typography:i}=s,m=t(({addComponents:t})=>{const s=Object.entries(i.style).map(([t,s])=>[`.${o(t)}`,{...s.small,[`@media (min-width: ${e.medium})`]:{...s.base}}]);t(Object.fromEntries(s))});export{m as jokulTypographyPlugin};
1
+ import e from"tailwindcss/plugin.js";import t from"../../tokens.js";const n=new RegExp("([\\p{Ll}\\d])(\\p{Lu})","gu"),r=new RegExp("(\\p{Lu})([\\p{Lu}][\\p{Ll}])","gu"),c=new RegExp("(\\d)\\p{Ll}|(\\p{L})\\d","u"),o=/[^\p{L}\d]+/giu,i="$1\0$2";function s(e){let t=e.trim();t=t.replace(n,i).replace(r,i),t=t.replace(o,"\0");let c=0,s=t.length;for(;"\0"===t.charAt(c);)c++;if(c===s)return[];for(;"\0"===t.charAt(s-1);)s--;return t.slice(c,s).split(/\0/g)}function l(e){const t=s(e);for(let e=0;e<t.length;e++){const n=t[e],r=c.exec(n);if(r){const c=r.index+(r[1]??r[2]).length;t.splice(e,1,n.slice(0,c),n.slice(c))}}return t}function p(e,t){const[n,r,c]=function(e,t={}){const n=t.split??(t.separateNumbers?l:s),r=t.prefixCharacters??"",c=t.suffixCharacters??"";let o=0,i=e.length;for(;o<e.length;){const t=e.charAt(o);if(!r.includes(t))break;o++}for(;i>o;){const t=i-1,n=e.charAt(t);if(!c.includes(n))break;i=t}return[e.slice(0,o),n(e.slice(o,i)),e.slice(i)]}(e,t);return n+r.map(function(e){return!1===e?e=>e.toLowerCase():t=>t.toLocaleLowerCase(e)}(t?.locale)).join(t?.delimiter??" ")+c}function u(e,t){return p(e,{delimiter:"-",...t})}const{textStyle:a}=t,f=e(({addComponents:e})=>{const t=Object.entries(a).map(([e,t])=>[`.${u(e)}`,{font:t}]);e(Object.fromEntries(t))});export{f as jokulTypographyPlugin};
2
2
  //# sourceMappingURL=jokulTypographyPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jokulTypographyPlugin.js","sources":["../../../../src/tailwind/plugins/jokulTypographyPlugin.ts"],"sourcesContent":["import { kebabCase } from \"change-case\";\nimport plugin from \"tailwindcss/plugin.js\";\nimport tokens from \"../../core/tokens.js\";\n\nconst { breakpoint, typography } = tokens;\n\nexport const jokulTypographyPlugin = plugin(({ addComponents }) => {\n const mappedTextStyles = Object.entries(typography.style).map(\n ([name, style]) => [\n `.${kebabCase(name)}`,\n {\n ...style.small,\n [`@media (min-width: ${breakpoint.medium})`]: {\n ...style.base,\n },\n },\n ],\n );\n\n addComponents(Object.fromEntries(mappedTextStyles));\n});\n"],"names":["breakpoint","typography","tokens","jokulTypographyPlugin","plugin","addComponents","mappedTextStyles","Object","entries","style","map","name","kebabCase","small","medium","base","fromEntries"],"mappings":"wHAIA,MAAQA,WAAAA,EAAYC,WAAAA,GAAeC,EAEtBC,EAAwBC,EAAO,EAAGC,cAAAA,MAC3C,MAAMC,EAAmBC,OAAOC,QAAQP,EAAWQ,OAAOC,IACtD,EAAEC,EAAMF,KAAW,CACf,IAAIG,EAAUD,KACd,IACOF,EAAMI,MACT,CAAC,sBAAsBb,EAAWc,WAAY,IACvCL,EAAMM,SAMzBV,EAAcE,OAAOS,YAAYV"}
1
+ {"version":3,"file":"jokulTypographyPlugin.js","sources":["../../../../../../node_modules/.pnpm/change-case@5.4.4/node_modules/change-case/dist/index.js","../../../../src/tailwind/plugins/jokulTypographyPlugin.ts"],"sourcesContent":["// Regexps involved with splitting words in various case formats.\nconst SPLIT_LOWER_UPPER_RE = /([\\p{Ll}\\d])(\\p{Lu})/gu;\nconst SPLIT_UPPER_UPPER_RE = /(\\p{Lu})([\\p{Lu}][\\p{Ll}])/gu;\n// Used to iterate over the initial split result and separate numbers.\nconst SPLIT_SEPARATE_NUMBER_RE = /(\\d)\\p{Ll}|(\\p{L})\\d/u;\n// Regexp involved with stripping non-word characters from the result.\nconst DEFAULT_STRIP_REGEXP = /[^\\p{L}\\d]+/giu;\n// The replacement value for splits.\nconst SPLIT_REPLACE_VALUE = \"$1\\0$2\";\n// The default characters to keep after transforming case.\nconst DEFAULT_PREFIX_SUFFIX_CHARACTERS = \"\";\n/**\n * Split any cased input strings into an array of words.\n */\nexport function split(value) {\n let result = value.trim();\n result = result\n .replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)\n .replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);\n result = result.replace(DEFAULT_STRIP_REGEXP, \"\\0\");\n let start = 0;\n let end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n if (start === end)\n return [];\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n return result.slice(start, end).split(/\\0/g);\n}\n/**\n * Split the input string into an array of words, separating numbers.\n */\nexport function splitSeparateNumbers(value) {\n const words = split(value);\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);\n if (match) {\n const offset = match.index + (match[1] ?? match[2]).length;\n words.splice(i, 1, word.slice(0, offset), word.slice(offset));\n }\n }\n return words;\n}\n/**\n * Convert a string to space separated lower case (`foo bar`).\n */\nexport function noCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (prefix +\n words.map(lowerFactory(options?.locale)).join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to camel case (`fooBar`).\n */\nexport function camelCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return (prefix +\n words\n .map((word, index) => {\n if (index === 0)\n return lower(word);\n return transform(word, index);\n })\n .join(options?.delimiter ?? \"\") +\n suffix);\n}\n/**\n * Convert a string to pascal case (`FooBar`).\n */\nexport function pascalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return prefix + words.map(transform).join(options?.delimiter ?? \"\") + suffix;\n}\n/**\n * Convert a string to pascal snake case (`Foo_Bar`).\n */\nexport function pascalSnakeCase(input, options) {\n return capitalCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to capital case (`Foo Bar`).\n */\nexport function capitalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n return (prefix +\n words\n .map(capitalCaseTransformFactory(lower, upper))\n .join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to constant case (`FOO_BAR`).\n */\nexport function constantCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (prefix +\n words.map(upperFactory(options?.locale)).join(options?.delimiter ?? \"_\") +\n suffix);\n}\n/**\n * Convert a string to dot case (`foo.bar`).\n */\nexport function dotCase(input, options) {\n return noCase(input, { delimiter: \".\", ...options });\n}\n/**\n * Convert a string to kebab case (`foo-bar`).\n */\nexport function kebabCase(input, options) {\n return noCase(input, { delimiter: \"-\", ...options });\n}\n/**\n * Convert a string to path case (`foo/bar`).\n */\nexport function pathCase(input, options) {\n return noCase(input, { delimiter: \"/\", ...options });\n}\n/**\n * Convert a string to path case (`Foo bar`).\n */\nexport function sentenceCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = capitalCaseTransformFactory(lower, upper);\n return (prefix +\n words\n .map((word, index) => {\n if (index === 0)\n return transform(word);\n return lower(word);\n })\n .join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to snake case (`foo_bar`).\n */\nexport function snakeCase(input, options) {\n return noCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to header case (`Foo-Bar`).\n */\nexport function trainCase(input, options) {\n return capitalCase(input, { delimiter: \"-\", ...options });\n}\nfunction lowerFactory(locale) {\n return locale === false\n ? (input) => input.toLowerCase()\n : (input) => input.toLocaleLowerCase(locale);\n}\nfunction upperFactory(locale) {\n return locale === false\n ? (input) => input.toUpperCase()\n : (input) => input.toLocaleUpperCase(locale);\n}\nfunction capitalCaseTransformFactory(lower, upper) {\n return (word) => `${upper(word[0])}${lower(word.slice(1))}`;\n}\nfunction pascalCaseTransformFactory(lower, upper) {\n return (word, index) => {\n const char0 = word[0];\n const initial = index > 0 && char0 >= \"0\" && char0 <= \"9\" ? \"_\" + char0 : upper(char0);\n return initial + lower(word.slice(1));\n };\n}\nfunction splitPrefixSuffix(input, options = {}) {\n const splitFn = options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);\n const prefixCharacters = options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n const suffixCharacters = options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n let prefixIndex = 0;\n let suffixIndex = input.length;\n while (prefixIndex < input.length) {\n const char = input.charAt(prefixIndex);\n if (!prefixCharacters.includes(char))\n break;\n prefixIndex++;\n }\n while (suffixIndex > prefixIndex) {\n const index = suffixIndex - 1;\n const char = input.charAt(index);\n if (!suffixCharacters.includes(char))\n break;\n suffixIndex = index;\n }\n return [\n input.slice(0, prefixIndex),\n splitFn(input.slice(prefixIndex, suffixIndex)),\n input.slice(suffixIndex),\n ];\n}\n//# sourceMappingURL=index.js.map","import { kebabCase } from \"change-case\";\nimport plugin from \"tailwindcss/plugin.js\";\nimport tokens from \"../../tokens.js\";\n\nconst { textStyle } = tokens;\n\nexport const jokulTypographyPlugin = plugin(({ addComponents }) => {\n const mappedTextStyles = Object.entries(textStyle).map(([name, style]) => [\n `.${kebabCase(name)}`,\n {\n font: style,\n },\n ]);\n\n addComponents(Object.fromEntries(mappedTextStyles));\n});\n"],"names":["SPLIT_LOWER_UPPER_RE","RegExp","SPLIT_UPPER_UPPER_RE","SPLIT_SEPARATE_NUMBER_RE","DEFAULT_STRIP_REGEXP","SPLIT_REPLACE_VALUE","split","value","result","trim","replace","start","end","length","charAt","slice","splitSeparateNumbers","words","i","word","match","exec","offset","index","splice","noCase","input","options","prefix","suffix","splitFn","separateNumbers","prefixCharacters","suffixCharacters","prefixIndex","suffixIndex","char","includes","splitPrefixSuffix","map","locale","toLowerCase","toLocaleLowerCase","lowerFactory","join","delimiter","kebabCase","textStyle","tokens","jokulTypographyPlugin","plugin","addComponents","mappedTextStyles","Object","entries","name","style","font","fromEntries"],"mappings":"oEACA,MAAMA,EAAuB,IAAAC,OAAA,0BAAA,MACvBC,EAAuB,WAAA,gCAAA,MAEvBC,EAA2B,IAAAF,OAAA,2BAAA,KAE3BG,EAAuB,iBAEvBC,EAAsB,SAMrB,SAASC,EAAMC,GAClB,IAAIC,EAASD,EAAME,OACnBD,EAASA,EACJE,QAAQV,EAAsBK,GAC9BK,QAAQR,EAAsBG,GACnCG,EAASA,EAAOE,QAAQN,EAAsB,MAC9C,IAAIO,EAAQ,EACRC,EAAMJ,EAAOK,OAEjB,KAAgC,OAAzBL,EAAOM,OAAOH,IACjBA,IACJ,GAAIA,IAAUC,EACV,MAAO,GACX,KAAkC,OAA3BJ,EAAOM,OAAOF,EAAM,IACvBA,IACJ,OAAOJ,EAAOO,MAAMJ,EAAOC,GAAKN,MAAM,MAC1C,CAIO,SAASU,EAAqBT,GACjC,MAAMU,EAAQX,EAAMC,GACpB,IAAA,IAASW,EAAI,EAAGA,EAAID,EAAMJ,OAAQK,IAAK,CACnC,MAAMC,EAAOF,EAAMC,GACbE,EAAQjB,EAAyBkB,KAAKF,GAC5C,GAAIC,EAAO,CACP,MAAME,EAASF,EAAMG,OAASH,EAAM,IAAMA,EAAM,IAAIP,OACpDI,EAAMO,OAAON,EAAG,EAAGC,EAAKJ,MAAM,EAAGO,GAASH,EAAKJ,MAAMO,GACzD,CACJ,CACA,OAAOL,CACX,CAIO,SAASQ,EAAOC,EAAOC,GAC1B,MAAOC,EAAQX,EAAOY,GAqI1B,SAA2BH,EAAOC,EAAU,IACxC,MAAMG,EAAUH,EAAQrB,QAAUqB,EAAQI,gBAAkBf,EAAuBV,GAC7E0B,EAAmBL,EAAQK,kBA/KI,GAgL/BC,EAAmBN,EAAQM,kBAhLI,GAiLrC,IAAIC,EAAc,EACdC,EAAcT,EAAMb,OACxB,KAAOqB,EAAcR,EAAMb,QAAQ,CAC/B,MAAMuB,EAAOV,EAAMZ,OAAOoB,GAC1B,IAAKF,EAAiBK,SAASD,GAC3B,MACJF,GACJ,CACA,KAAOC,EAAcD,GAAa,CAC9B,MAAMX,EAAQY,EAAc,EACtBC,EAAOV,EAAMZ,OAAOS,GAC1B,IAAKU,EAAiBI,SAASD,GAC3B,MACJD,EAAcZ,CAClB,CACA,MAAO,CACHG,EAAMX,MAAM,EAAGmB,GACfJ,EAAQJ,EAAMX,MAAMmB,EAAaC,IACjCT,EAAMX,MAAMoB,GAEpB,CA7JoCG,CAAkBZ,EAAOC,GACzD,OAAQC,EACJX,EAAMsB,IA+Gd,SAAsBC,GAClB,OAAkB,IAAXA,EACAd,GAAUA,EAAMe,cAChBf,GAAUA,EAAMgB,kBAAkBF,EAC7C,CAnHkBG,CAAahB,GAASa,SAASI,KAAKjB,GAASkB,WAAa,KACpEhB,CACR,CAsEO,SAASiB,EAAUpB,EAAOC,GAC7B,OAAOF,EAAOC,EAAO,CAAEmB,UAAW,OAAQlB,GAC9C,CC1HA,MAAQoB,UAAAA,GAAcC,EAETC,EAAwBC,EAAO,EAAGC,cAAAA,MAC3C,MAAMC,EAAmBC,OAAOC,QAAQP,GAAWR,IAAI,EAAEgB,EAAMC,KAAW,CACtE,IAAIV,EAAUS,KACd,CACIE,KAAMD,KAIdL,EAAcE,OAAOK,YAAYN","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- import o from"../core/tokens.js";import r from"./colors.js";import{jokulTypographyPlugin as e}from"./plugins/jokulTypographyPlugin.js";const i={theme:{colors:r,spacing:o.spacing,fontWeight:o.typography.weight,fontSize:o.typography.font.size,lineHeight:o.typography.line.height,borderRadius:o.border.radius,borderWidth:o.border.width,screens:{sm:o.breakpoint.medium,md:o.breakpoint.large,lg:o.breakpoint.xl}},plugins:[e]};export{i as jokulPreset};
1
+ import o from"../tokens.js";import{jokulTypographyPlugin as e}from"./plugins/jokulTypographyPlugin.js";const i={theme:{colors:o.color,spacing:o.spacing,fontWeight:o.font.weight,fontSize:o.font.size,lineHeight:o.lineHeight,borderRadius:o.border.radius,borderWidth:o.border.width,screens:{sm:o.breakpoint.medium,md:o.breakpoint.large,lg:o.breakpoint.xl}},plugins:[e]};export{i as jokulPreset};
2
2
  //# sourceMappingURL=tailwindPreset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tailwindPreset.js","sources":["../../../src/tailwind/tailwindPreset.ts"],"sourcesContent":["import type { Config } from \"tailwindcss\";\nimport tokens from \"../core/tokens.js\";\nimport colors from \"./colors.js\";\nimport { jokulTypographyPlugin } from \"./plugins/jokulTypographyPlugin.js\";\n\nexport const jokulPreset: Partial<Config> = {\n theme: {\n colors,\n spacing: tokens.spacing,\n fontWeight: tokens.typography.weight,\n fontSize: tokens.typography.font.size,\n lineHeight: tokens.typography.line.height,\n borderRadius: tokens.border.radius,\n borderWidth: tokens.border.width,\n screens: {\n sm: tokens.breakpoint.medium,\n md: tokens.breakpoint.large,\n lg: tokens.breakpoint.xl,\n },\n },\n plugins: [jokulTypographyPlugin],\n};\n"],"names":["jokulPreset","theme","colors","spacing","tokens","fontWeight","typography","weight","fontSize","font","size","lineHeight","line","height","borderRadius","border","radius","borderWidth","width","screens","sm","breakpoint","medium","md","large","lg","xl","plugins","jokulTypographyPlugin"],"mappings":"uIAKO,MAAMA,EAA+B,CACxCC,MAAO,CACHC,OAAAA,EACAC,QAASC,EAAOD,QAChBE,WAAYD,EAAOE,WAAWC,OAC9BC,SAAUJ,EAAOE,WAAWG,KAAKC,KACjCC,WAAYP,EAAOE,WAAWM,KAAKC,OACnCC,aAAcV,EAAOW,OAAOC,OAC5BC,YAAab,EAAOW,OAAOG,MAC3BC,QAAS,CACLC,GAAIhB,EAAOiB,WAAWC,OACtBC,GAAInB,EAAOiB,WAAWG,MACtBC,GAAIrB,EAAOiB,WAAWK,KAG9BC,QAAS,CAACC"}
1
+ {"version":3,"file":"tailwindPreset.js","sources":["../../../src/tailwind/tailwindPreset.ts"],"sourcesContent":["import type { Config } from \"tailwindcss\";\nimport tokens from \"../tokens.js\";\nimport { jokulTypographyPlugin } from \"./plugins/jokulTypographyPlugin.js\";\n\nexport const jokulPreset: Partial<Config> = {\n theme: {\n colors: tokens.color,\n spacing: tokens.spacing,\n fontWeight: tokens.font.weight,\n fontSize: tokens.font.size,\n lineHeight: tokens.lineHeight,\n borderRadius: tokens.border.radius,\n borderWidth: tokens.border.width,\n screens: {\n sm: tokens.breakpoint.medium,\n md: tokens.breakpoint.large,\n lg: tokens.breakpoint.xl,\n },\n },\n plugins: [jokulTypographyPlugin],\n};\n"],"names":["jokulPreset","theme","colors","tokens","color","spacing","fontWeight","font","weight","fontSize","size","lineHeight","borderRadius","border","radius","borderWidth","width","screens","sm","breakpoint","medium","md","large","lg","xl","plugins","jokulTypographyPlugin"],"mappings":"uGAIO,MAAMA,EAA+B,CACxCC,MAAO,CACHC,OAAQC,EAAOC,MACfC,QAASF,EAAOE,QAChBC,WAAYH,EAAOI,KAAKC,OACxBC,SAAUN,EAAOI,KAAKG,KACtBC,WAAYR,EAAOQ,WACnBC,aAAcT,EAAOU,OAAOC,OAC5BC,YAAaZ,EAAOU,OAAOG,MAC3BC,QAAS,CACLC,GAAIf,EAAOgB,WAAWC,OACtBC,GAAIlB,EAAOgB,WAAWG,MACtBC,GAAIpB,EAAOgB,WAAWK,KAG9BC,QAAS,CAACC"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+ declare const _default: {
5
+ color: {
6
+ "@": {
7
+ background: {
8
+ page: string;
9
+ container: string;
10
+ "container-accent": string;
11
+ contrast: string;
12
+ };
13
+ text: {
14
+ default: string;
15
+ subdued: string;
16
+ accent: string;
17
+ "on-contrast": string;
18
+ };
19
+ border: {
20
+ default: string;
21
+ subdued: string;
22
+ strong: string;
23
+ };
24
+ };
25
+ warning: {
26
+ background: {
27
+ page: string;
28
+ container: string;
29
+ "container-accent": string;
30
+ contrast: string;
31
+ };
32
+ text: {
33
+ default: string;
34
+ subdued: string;
35
+ accent: string;
36
+ "on-contrast": string;
37
+ };
38
+ border: {
39
+ default: string;
40
+ subdued: string;
41
+ strong: string;
42
+ };
43
+ };
44
+ success: {
45
+ background: {
46
+ page: string;
47
+ container: string;
48
+ "container-accent": string;
49
+ contrast: string;
50
+ };
51
+ text: {
52
+ default: string;
53
+ subdued: string;
54
+ accent: string;
55
+ "on-contrast": string;
56
+ };
57
+ border: {
58
+ default: string;
59
+ subdued: string;
60
+ strong: string;
61
+ };
62
+ };
63
+ info: {
64
+ background: {
65
+ page: string;
66
+ container: string;
67
+ "container-accent": string;
68
+ contrast: string;
69
+ };
70
+ text: {
71
+ default: string;
72
+ subdued: string;
73
+ accent: string;
74
+ "on-contrast": string;
75
+ };
76
+ border: {
77
+ default: string;
78
+ subdued: string;
79
+ strong: string;
80
+ };
81
+ };
82
+ error: {
83
+ background: {
84
+ page: string;
85
+ container: string;
86
+ "container-accent": string;
87
+ contrast: string;
88
+ };
89
+ text: {
90
+ default: string;
91
+ subdued: string;
92
+ accent: string;
93
+ "on-contrast": string;
94
+ };
95
+ border: {
96
+ default: string;
97
+ subdued: string;
98
+ strong: string;
99
+ };
100
+ };
101
+ };
102
+ unit: {
103
+ 0: string;
104
+ 10: string;
105
+ 15: string;
106
+ 20: string;
107
+ 25: string;
108
+ 30: string;
109
+ 35: string;
110
+ 40: string;
111
+ 50: string;
112
+ 60: string;
113
+ 70: string;
114
+ 80: string;
115
+ 90: string;
116
+ 100: string;
117
+ 130: string;
118
+ 210: string;
119
+ base: string;
120
+ "02": string;
121
+ "05": string;
122
+ };
123
+ spacing: {
124
+ 0: string;
125
+ 2: string;
126
+ 4: string;
127
+ 8: string;
128
+ 12: string;
129
+ 16: string;
130
+ 24: string;
131
+ 32: string;
132
+ 40: string;
133
+ 64: string;
134
+ 104: string;
135
+ 168: string;
136
+ none: string;
137
+ "2xs": string;
138
+ xs: string;
139
+ s: string;
140
+ m: string;
141
+ l: string;
142
+ xl: string;
143
+ "2xl": string;
144
+ };
145
+ border: {
146
+ width: {
147
+ 1: string;
148
+ 2: string;
149
+ 3: string;
150
+ };
151
+ radius: {
152
+ none: string;
153
+ xs: string;
154
+ s: string;
155
+ m: string;
156
+ l: string;
157
+ full: string;
158
+ };
159
+ };
160
+ breakpoint: {
161
+ small: string;
162
+ medium: string;
163
+ large: string;
164
+ xl: string;
165
+ };
166
+ motion: {
167
+ timing: {
168
+ energetic: string;
169
+ snappy: string;
170
+ productive: string;
171
+ polite: string;
172
+ expressive: string;
173
+ lazy: string;
174
+ };
175
+ easing: {
176
+ standard: string;
177
+ entrance: string;
178
+ exit: string;
179
+ easeInBounceOut: string;
180
+ focus: string;
181
+ };
182
+ };
183
+ font: {
184
+ size: {
185
+ 1: string;
186
+ 2: string;
187
+ 3: string;
188
+ 4: string;
189
+ 5: string;
190
+ 6: string;
191
+ 7: string;
192
+ 8: string;
193
+ 9: string;
194
+ 10: string;
195
+ };
196
+ weight: {
197
+ normal: string;
198
+ bold: string;
199
+ };
200
+ family: {
201
+ regular: string;
202
+ display: string;
203
+ mono: string;
204
+ };
205
+ };
206
+ lineHeight: {
207
+ flush: string;
208
+ tight: string;
209
+ relaxed: string;
210
+ };
211
+ textStyle: {
212
+ title: string;
213
+ "title-small": string;
214
+ "heading-1": string;
215
+ "heading-2": string;
216
+ "heading-3": string;
217
+ "heading-4": string;
218
+ "heading-5": string;
219
+ "paragraph-large": string;
220
+ "paragraph-medium": string;
221
+ "paragraph-small": string;
222
+ "text-large": string;
223
+ "text-medium": string;
224
+ "text-small": string;
225
+ "text-micro": string;
226
+ };
227
+ };
228
+ export default _default;
@@ -0,0 +1,2 @@
1
+ const r={color:{"@":{background:{page:"var(--jkl-color-background-page)",container:"var(--jkl-color-background-container)","container-accent":"var(--jkl-color-background-container-accent)",contrast:"var(--jkl-color-background-contrast)"},text:{default:"var(--jkl-color-text-default)",subdued:"var(--jkl-color-text-subdued)",accent:"var(--jkl-color-text-accent)","on-contrast":"var(--jkl-color-text-on-contrast)"},border:{default:"var(--jkl-color-border-default)",subdued:"var(--jkl-color-border-subdued)",strong:"var(--jkl-color-border-strong)"}},warning:{background:{page:"var(--jkl-color-warning-background-page)",container:"var(--jkl-color-warning-background-container)","container-accent":"var(--jkl-color-warning-background-container-accent)",contrast:"var(--jkl-color-warning-background-contrast)"},text:{default:"var(--jkl-color-warning-text-default)",subdued:"var(--jkl-color-warning-text-subdued)",accent:"var(--jkl-color-warning-text-accent)","on-contrast":"var(--jkl-color-warning-text-on-contrast)"},border:{default:"var(--jkl-color-warning-border-default)",subdued:"var(--jkl-color-warning-border-subdued)",strong:"var(--jkl-color-warning-border-strong)"}},success:{background:{page:"var(--jkl-color-success-background-page)",container:"var(--jkl-color-success-background-container)","container-accent":"var(--jkl-color-success-background-container-accent)",contrast:"var(--jkl-color-success-background-contrast)"},text:{default:"var(--jkl-color-success-text-default)",subdued:"var(--jkl-color-success-text-subdued)",accent:"var(--jkl-color-success-text-accent)","on-contrast":"var(--jkl-color-success-text-on-contrast)"},border:{default:"var(--jkl-color-success-border-default)",subdued:"var(--jkl-color-success-border-subdued)",strong:"var(--jkl-color-success-border-strong)"}},info:{background:{page:"var(--jkl-color-info-background-page)",container:"var(--jkl-color-info-background-container)","container-accent":"var(--jkl-color-info-background-container-accent)",contrast:"var(--jkl-color-info-background-contrast)"},text:{default:"var(--jkl-color-info-text-default)",subdued:"var(--jkl-color-info-text-subdued)",accent:"var(--jkl-color-info-text-accent)","on-contrast":"var(--jkl-color-info-text-on-contrast)"},border:{default:"var(--jkl-color-info-border-default)",subdued:"var(--jkl-color-info-border-subdued)",strong:"var(--jkl-color-info-border-strong)"}},error:{background:{page:"var(--jkl-color-error-background-page)",container:"var(--jkl-color-error-background-container)","container-accent":"var(--jkl-color-error-background-container-accent)",contrast:"var(--jkl-color-error-background-contrast)"},text:{default:"var(--jkl-color-error-text-default)",subdued:"var(--jkl-color-error-text-subdued)",accent:"var(--jkl-color-error-text-accent)","on-contrast":"var(--jkl-color-error-text-on-contrast)"},border:{default:"var(--jkl-color-error-border-default)",subdued:"var(--jkl-color-error-border-subdued)",strong:"var(--jkl-color-error-border-strong)"}}},unit:{0:"var(--jkl-unit-0)",10:"var(--jkl-unit-10)",15:"var(--jkl-unit-15)",20:"var(--jkl-unit-20)",25:"var(--jkl-unit-25)",30:"var(--jkl-unit-30)",35:"var(--jkl-unit-35)",40:"var(--jkl-unit-40)",50:"var(--jkl-unit-50)",60:"var(--jkl-unit-60)",70:"var(--jkl-unit-70)",80:"var(--jkl-unit-80)",90:"var(--jkl-unit-90)",100:"var(--jkl-unit-100)",130:"var(--jkl-unit-130)",210:"var(--jkl-unit-210)",base:"var(--jkl-unit-base)","02":"var(--jkl-unit-02)","05":"var(--jkl-unit-05)"},spacing:{0:"var(--jkl-spacing-0)",2:"var(--jkl-spacing-2)",4:"var(--jkl-spacing-4)",8:"var(--jkl-spacing-8)",12:"var(--jkl-spacing-12)",16:"var(--jkl-spacing-16)",24:"var(--jkl-spacing-24)",32:"var(--jkl-spacing-32)",40:"var(--jkl-spacing-40)",64:"var(--jkl-spacing-64)",104:"var(--jkl-spacing-104)",168:"var(--jkl-spacing-168)",none:"var(--jkl-spacing-none)","2xs":"var(--jkl-spacing-2xs)",xs:"var(--jkl-spacing-xs)",s:"var(--jkl-spacing-s)",m:"var(--jkl-spacing-m)",l:"var(--jkl-spacing-l)",xl:"var(--jkl-spacing-xl)","2xl":"var(--jkl-spacing-2xl)"},border:{width:{1:"var(--jkl-border-width-1)",2:"var(--jkl-border-width-2)",3:"var(--jkl-border-width-3)"},radius:{none:"var(--jkl-border-radius-none)",xs:"var(--jkl-border-radius-xs)",s:"var(--jkl-border-radius-s)",m:"var(--jkl-border-radius-m)",l:"var(--jkl-border-radius-l)",full:"var(--jkl-border-radius-full)"}},breakpoint:{small:"var(--jkl-breakpoint-small)",medium:"var(--jkl-breakpoint-medium)",large:"var(--jkl-breakpoint-large)",xl:"var(--jkl-breakpoint-xl)"},motion:{timing:{energetic:"var(--jkl-motion-timing-energetic)",snappy:"var(--jkl-motion-timing-snappy)",productive:"var(--jkl-motion-timing-productive)",polite:"var(--jkl-motion-timing-polite)",expressive:"var(--jkl-motion-timing-expressive)",lazy:"var(--jkl-motion-timing-lazy)"},easing:{standard:"var(--jkl-motion-easing-standard)",entrance:"var(--jkl-motion-easing-entrance)",exit:"var(--jkl-motion-easing-exit)",easeInBounceOut:"var(--jkl-motion-easing-ease-in-bounce-out)",focus:"var(--jkl-motion-easing-focus)"}},font:{size:{1:"var(--jkl-font-size-1)",2:"var(--jkl-font-size-2)",3:"var(--jkl-font-size-3)",4:"var(--jkl-font-size-4)",5:"var(--jkl-font-size-5)",6:"var(--jkl-font-size-6)",7:"var(--jkl-font-size-7)",8:"var(--jkl-font-size-8)",9:"var(--jkl-font-size-9)",10:"var(--jkl-font-size-10)"},weight:{normal:"var(--jkl-font-weight-normal)",bold:"var(--jkl-font-weight-bold)"},family:{regular:"var(--jkl-font-family-regular)",display:"var(--jkl-font-family-display)",mono:"var(--jkl-font-family-mono)"}},lineHeight:{flush:"var(--jkl-line-height-flush)",tight:"var(--jkl-line-height-tight)",relaxed:"var(--jkl-line-height-relaxed)"},textStyle:{title:"var(--jkl-text-style-title)","title-small":"var(--jkl-text-style-title-small)","heading-1":"var(--jkl-text-style-heading-1)","heading-2":"var(--jkl-text-style-heading-2)","heading-3":"var(--jkl-text-style-heading-3)","heading-4":"var(--jkl-text-style-heading-4)","heading-5":"var(--jkl-text-style-heading-5)","paragraph-large":"var(--jkl-text-style-paragraph-large)","paragraph-medium":"var(--jkl-text-style-paragraph-medium)","paragraph-small":"var(--jkl-text-style-paragraph-small)","text-large":"var(--jkl-text-style-text-large)","text-medium":"var(--jkl-text-style-text-medium)","text-small":"var(--jkl-text-style-text-small)","text-micro":"var(--jkl-text-style-text-micro)"}};export{r as default};
2
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sources":["../../src/tokens.ts"],"sourcesContent":["/**\n * Do not edit directly, this file was auto-generated.\n */\n\nexport default {\n color: {\n \"@\": {\n background: {\n page: \"var(--jkl-color-background-page)\",\n container: \"var(--jkl-color-background-container)\",\n \"container-accent\": \"var(--jkl-color-background-container-accent)\",\n contrast: \"var(--jkl-color-background-contrast)\",\n },\n text: {\n default: \"var(--jkl-color-text-default)\",\n subdued: \"var(--jkl-color-text-subdued)\",\n accent: \"var(--jkl-color-text-accent)\",\n \"on-contrast\": \"var(--jkl-color-text-on-contrast)\",\n },\n border: {\n default: \"var(--jkl-color-border-default)\",\n subdued: \"var(--jkl-color-border-subdued)\",\n strong: \"var(--jkl-color-border-strong)\",\n },\n },\n warning: {\n background: {\n page: \"var(--jkl-color-warning-background-page)\",\n container: \"var(--jkl-color-warning-background-container)\",\n \"container-accent\":\n \"var(--jkl-color-warning-background-container-accent)\",\n contrast: \"var(--jkl-color-warning-background-contrast)\",\n },\n text: {\n default: \"var(--jkl-color-warning-text-default)\",\n subdued: \"var(--jkl-color-warning-text-subdued)\",\n accent: \"var(--jkl-color-warning-text-accent)\",\n \"on-contrast\": \"var(--jkl-color-warning-text-on-contrast)\",\n },\n border: {\n default: \"var(--jkl-color-warning-border-default)\",\n subdued: \"var(--jkl-color-warning-border-subdued)\",\n strong: \"var(--jkl-color-warning-border-strong)\",\n },\n },\n success: {\n background: {\n page: \"var(--jkl-color-success-background-page)\",\n container: \"var(--jkl-color-success-background-container)\",\n \"container-accent\":\n \"var(--jkl-color-success-background-container-accent)\",\n contrast: \"var(--jkl-color-success-background-contrast)\",\n },\n text: {\n default: \"var(--jkl-color-success-text-default)\",\n subdued: \"var(--jkl-color-success-text-subdued)\",\n accent: \"var(--jkl-color-success-text-accent)\",\n \"on-contrast\": \"var(--jkl-color-success-text-on-contrast)\",\n },\n border: {\n default: \"var(--jkl-color-success-border-default)\",\n subdued: \"var(--jkl-color-success-border-subdued)\",\n strong: \"var(--jkl-color-success-border-strong)\",\n },\n },\n info: {\n background: {\n page: \"var(--jkl-color-info-background-page)\",\n container: \"var(--jkl-color-info-background-container)\",\n \"container-accent\": \"var(--jkl-color-info-background-container-accent)\",\n contrast: \"var(--jkl-color-info-background-contrast)\",\n },\n text: {\n default: \"var(--jkl-color-info-text-default)\",\n subdued: \"var(--jkl-color-info-text-subdued)\",\n accent: \"var(--jkl-color-info-text-accent)\",\n \"on-contrast\": \"var(--jkl-color-info-text-on-contrast)\",\n },\n border: {\n default: \"var(--jkl-color-info-border-default)\",\n subdued: \"var(--jkl-color-info-border-subdued)\",\n strong: \"var(--jkl-color-info-border-strong)\",\n },\n },\n error: {\n background: {\n page: \"var(--jkl-color-error-background-page)\",\n container: \"var(--jkl-color-error-background-container)\",\n \"container-accent\":\n \"var(--jkl-color-error-background-container-accent)\",\n contrast: \"var(--jkl-color-error-background-contrast)\",\n },\n text: {\n default: \"var(--jkl-color-error-text-default)\",\n subdued: \"var(--jkl-color-error-text-subdued)\",\n accent: \"var(--jkl-color-error-text-accent)\",\n \"on-contrast\": \"var(--jkl-color-error-text-on-contrast)\",\n },\n border: {\n default: \"var(--jkl-color-error-border-default)\",\n subdued: \"var(--jkl-color-error-border-subdued)\",\n strong: \"var(--jkl-color-error-border-strong)\",\n },\n },\n },\n unit: {\n 0: \"var(--jkl-unit-0)\",\n 10: \"var(--jkl-unit-10)\",\n 15: \"var(--jkl-unit-15)\",\n 20: \"var(--jkl-unit-20)\",\n 25: \"var(--jkl-unit-25)\",\n 30: \"var(--jkl-unit-30)\",\n 35: \"var(--jkl-unit-35)\",\n 40: \"var(--jkl-unit-40)\",\n 50: \"var(--jkl-unit-50)\",\n 60: \"var(--jkl-unit-60)\",\n 70: \"var(--jkl-unit-70)\",\n 80: \"var(--jkl-unit-80)\",\n 90: \"var(--jkl-unit-90)\",\n 100: \"var(--jkl-unit-100)\",\n 130: \"var(--jkl-unit-130)\",\n 210: \"var(--jkl-unit-210)\",\n base: \"var(--jkl-unit-base)\",\n \"02\": \"var(--jkl-unit-02)\",\n \"05\": \"var(--jkl-unit-05)\",\n },\n spacing: {\n 0: \"var(--jkl-spacing-0)\",\n 2: \"var(--jkl-spacing-2)\",\n 4: \"var(--jkl-spacing-4)\",\n 8: \"var(--jkl-spacing-8)\",\n 12: \"var(--jkl-spacing-12)\",\n 16: \"var(--jkl-spacing-16)\",\n 24: \"var(--jkl-spacing-24)\",\n 32: \"var(--jkl-spacing-32)\",\n 40: \"var(--jkl-spacing-40)\",\n 64: \"var(--jkl-spacing-64)\",\n 104: \"var(--jkl-spacing-104)\",\n 168: \"var(--jkl-spacing-168)\",\n none: \"var(--jkl-spacing-none)\",\n \"2xs\": \"var(--jkl-spacing-2xs)\",\n xs: \"var(--jkl-spacing-xs)\",\n s: \"var(--jkl-spacing-s)\",\n m: \"var(--jkl-spacing-m)\",\n l: \"var(--jkl-spacing-l)\",\n xl: \"var(--jkl-spacing-xl)\",\n \"2xl\": \"var(--jkl-spacing-2xl)\",\n },\n border: {\n width: {\n 1: \"var(--jkl-border-width-1)\",\n 2: \"var(--jkl-border-width-2)\",\n 3: \"var(--jkl-border-width-3)\",\n },\n radius: {\n none: \"var(--jkl-border-radius-none)\",\n xs: \"var(--jkl-border-radius-xs)\",\n s: \"var(--jkl-border-radius-s)\",\n m: \"var(--jkl-border-radius-m)\",\n l: \"var(--jkl-border-radius-l)\",\n full: \"var(--jkl-border-radius-full)\",\n },\n },\n breakpoint: {\n small: \"var(--jkl-breakpoint-small)\",\n medium: \"var(--jkl-breakpoint-medium)\",\n large: \"var(--jkl-breakpoint-large)\",\n xl: \"var(--jkl-breakpoint-xl)\",\n },\n motion: {\n timing: {\n energetic: \"var(--jkl-motion-timing-energetic)\",\n snappy: \"var(--jkl-motion-timing-snappy)\",\n productive: \"var(--jkl-motion-timing-productive)\",\n polite: \"var(--jkl-motion-timing-polite)\",\n expressive: \"var(--jkl-motion-timing-expressive)\",\n lazy: \"var(--jkl-motion-timing-lazy)\",\n },\n easing: {\n standard: \"var(--jkl-motion-easing-standard)\",\n entrance: \"var(--jkl-motion-easing-entrance)\",\n exit: \"var(--jkl-motion-easing-exit)\",\n easeInBounceOut: \"var(--jkl-motion-easing-ease-in-bounce-out)\",\n focus: \"var(--jkl-motion-easing-focus)\",\n },\n },\n font: {\n size: {\n 1: \"var(--jkl-font-size-1)\",\n 2: \"var(--jkl-font-size-2)\",\n 3: \"var(--jkl-font-size-3)\",\n 4: \"var(--jkl-font-size-4)\",\n 5: \"var(--jkl-font-size-5)\",\n 6: \"var(--jkl-font-size-6)\",\n 7: \"var(--jkl-font-size-7)\",\n 8: \"var(--jkl-font-size-8)\",\n 9: \"var(--jkl-font-size-9)\",\n 10: \"var(--jkl-font-size-10)\",\n },\n weight: {\n normal: \"var(--jkl-font-weight-normal)\",\n bold: \"var(--jkl-font-weight-bold)\",\n },\n family: {\n regular: \"var(--jkl-font-family-regular)\",\n display: \"var(--jkl-font-family-display)\",\n mono: \"var(--jkl-font-family-mono)\",\n },\n },\n lineHeight: {\n flush: \"var(--jkl-line-height-flush)\",\n tight: \"var(--jkl-line-height-tight)\",\n relaxed: \"var(--jkl-line-height-relaxed)\",\n },\n textStyle: {\n title: \"var(--jkl-text-style-title)\",\n \"title-small\": \"var(--jkl-text-style-title-small)\",\n \"heading-1\": \"var(--jkl-text-style-heading-1)\",\n \"heading-2\": \"var(--jkl-text-style-heading-2)\",\n \"heading-3\": \"var(--jkl-text-style-heading-3)\",\n \"heading-4\": \"var(--jkl-text-style-heading-4)\",\n \"heading-5\": \"var(--jkl-text-style-heading-5)\",\n \"paragraph-large\": \"var(--jkl-text-style-paragraph-large)\",\n \"paragraph-medium\": \"var(--jkl-text-style-paragraph-medium)\",\n \"paragraph-small\": \"var(--jkl-text-style-paragraph-small)\",\n \"text-large\": \"var(--jkl-text-style-text-large)\",\n \"text-medium\": \"var(--jkl-text-style-text-medium)\",\n \"text-small\": \"var(--jkl-text-style-text-small)\",\n \"text-micro\": \"var(--jkl-text-style-text-micro)\",\n },\n};\n"],"names":["tokens","color","background","page","container","contrast","text","default","subdued","accent","border","strong","warning","success","info","error","unit","base","spacing","none","xs","s","m","l","xl","width","radius","full","breakpoint","small","medium","large","motion","timing","energetic","snappy","productive","polite","expressive","lazy","easing","standard","entrance","exit","easeInBounceOut","focus","font","size","weight","normal","bold","family","regular","display","mono","lineHeight","flush","tight","relaxed","textStyle","title"],"mappings":"AAIA,MAAAA,EAAe,CACbC,MAAO,CACL,IAAK,CACHC,WAAY,CACVC,KAAM,mCACNC,UAAW,wCACX,mBAAoB,+CACpBC,SAAU,wCAEZC,KAAM,CACJC,QAAS,gCACTC,QAAS,gCACTC,OAAQ,+BACR,cAAe,qCAEjBC,OAAQ,CACNH,QAAS,kCACTC,QAAS,kCACTG,OAAQ,mCAGZC,QAAS,CACPV,WAAY,CACVC,KAAM,2CACNC,UAAW,gDACX,mBACE,uDACFC,SAAU,gDAEZC,KAAM,CACJC,QAAS,wCACTC,QAAS,wCACTC,OAAQ,uCACR,cAAe,6CAEjBC,OAAQ,CACNH,QAAS,0CACTC,QAAS,0CACTG,OAAQ,2CAGZE,QAAS,CACPX,WAAY,CACVC,KAAM,2CACNC,UAAW,gDACX,mBACE,uDACFC,SAAU,gDAEZC,KAAM,CACJC,QAAS,wCACTC,QAAS,wCACTC,OAAQ,uCACR,cAAe,6CAEjBC,OAAQ,CACNH,QAAS,0CACTC,QAAS,0CACTG,OAAQ,2CAGZG,KAAM,CACJZ,WAAY,CACVC,KAAM,wCACNC,UAAW,6CACX,mBAAoB,oDACpBC,SAAU,6CAEZC,KAAM,CACJC,QAAS,qCACTC,QAAS,qCACTC,OAAQ,oCACR,cAAe,0CAEjBC,OAAQ,CACNH,QAAS,uCACTC,QAAS,uCACTG,OAAQ,wCAGZI,MAAO,CACLb,WAAY,CACVC,KAAM,yCACNC,UAAW,8CACX,mBACE,qDACFC,SAAU,8CAEZC,KAAM,CACJC,QAAS,sCACTC,QAAS,sCACTC,OAAQ,qCACR,cAAe,2CAEjBC,OAAQ,CACNH,QAAS,wCACTC,QAAS,wCACTG,OAAQ,0CAIdK,KAAM,CACJ,EAAG,oBACH,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,GAAI,qBACJ,IAAK,sBACL,IAAK,sBACL,IAAK,sBACLC,KAAM,uBACN,KAAM,qBACN,KAAM,sBAERC,QAAS,CACP,EAAG,uBACH,EAAG,uBACH,EAAG,uBACH,EAAG,uBACH,GAAI,wBACJ,GAAI,wBACJ,GAAI,wBACJ,GAAI,wBACJ,GAAI,wBACJ,GAAI,wBACJ,IAAK,yBACL,IAAK,yBACLC,KAAM,0BACN,MAAO,yBACPC,GAAI,wBACJC,EAAG,uBACHC,EAAG,uBACHC,EAAG,uBACHC,GAAI,wBACJ,MAAO,0BAETd,OAAQ,CACNe,MAAO,CACL,EAAG,4BACH,EAAG,4BACH,EAAG,6BAELC,OAAQ,CACNP,KAAM,gCACNC,GAAI,8BACJC,EAAG,6BACHC,EAAG,6BACHC,EAAG,6BACHI,KAAM,kCAGVC,WAAY,CACVC,MAAO,8BACPC,OAAQ,+BACRC,MAAO,8BACPP,GAAI,4BAENQ,OAAQ,CACNC,OAAQ,CACNC,UAAW,qCACXC,OAAQ,kCACRC,WAAY,sCACZC,OAAQ,kCACRC,WAAY,sCACZC,KAAM,iCAERC,OAAQ,CACNC,SAAU,oCACVC,SAAU,oCACVC,KAAM,gCACNC,gBAAiB,8CACjBC,MAAO,mCAGXC,KAAM,CACJC,KAAM,CACJ,EAAG,yBACH,EAAG,yBACH,EAAG,yBACH,EAAG,yBACH,EAAG,yBACH,EAAG,yBACH,EAAG,yBACH,EAAG,yBACH,EAAG,yBACH,GAAI,2BAENC,OAAQ,CACNC,OAAQ,gCACRC,KAAM,+BAERC,OAAQ,CACNC,QAAS,iCACTC,QAAS,iCACTC,KAAM,gCAGVC,WAAY,CACVC,MAAO,+BACPC,MAAO,+BACPC,QAAS,kCAEXC,UAAW,CACTC,MAAO,8BACP,cAAe,oCACf,YAAa,kCACb,YAAa,kCACb,YAAa,kCACb,YAAa,kCACb,YAAa,kCACb,kBAAmB,wCACnB,mBAAoB,yCACpB,kBAAmB,wCACnB,aAAc,mCACd,cAAe,oCACf,aAAc,mCACd,aAAc"}
@@ -1,4 +1,4 @@
1
- import { Size } from '../core/types.js';
1
+ import { Size } from './types.js';
2
2
  export declare const getThemeAndSize: (element: Element | undefined) => {
3
3
  theme?: string;
4
4
  size?: Size;
@@ -1,2 +1,2 @@
1
- const e=e=>{if(!e)return{};const t=getComputedStyle(e),r=Number.parseInt(t.getPropertyValue("--jkl-background-color").replace("#",""),16)<8388607.5?"dark":"light",a=e.closest("[data-size]")?.getAttribute("data-size");return{theme:r,size:a}};export{e as getThemeAndSize};
1
+ const e=e=>{if(!e)return{};const t=getComputedStyle(e).colorScheme,s=e.closest("[data-size]")?.getAttribute("data-size");return{theme:t,size:s}};export{e as getThemeAndSize};
2
2
  //# sourceMappingURL=getThemeAndSize.js.map