@fremtind/jokul 0.1.1

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 (358) hide show
  1. package/LICENSE +21 -0
  2. package/build/build-stats.html +4842 -0
  3. package/build/cjs/components/ScreenReaderOnly.js +2 -0
  4. package/build/cjs/components/ScreenReaderOnly.js.map +1 -0
  5. package/build/cjs/components/SlotComponent.js +2 -0
  6. package/build/cjs/components/SlotComponent.js.map +1 -0
  7. package/build/cjs/components/index.js +2 -0
  8. package/build/cjs/components/index.js.map +1 -0
  9. package/build/cjs/components/navigation/Link.js +2 -0
  10. package/build/cjs/components/navigation/Link.js.map +1 -0
  11. package/build/cjs/components/navigation/NavLink.js +2 -0
  12. package/build/cjs/components/navigation/NavLink.js.map +1 -0
  13. package/build/cjs/components/navigation/index.js +2 -0
  14. package/build/cjs/components/navigation/index.js.map +1 -0
  15. package/build/cjs/core/as-child.js +2 -0
  16. package/build/cjs/core/as-child.js.map +1 -0
  17. package/build/cjs/core/index.js +2 -0
  18. package/build/cjs/core/index.js.map +1 -0
  19. package/build/cjs/core/polymorphism.js +2 -0
  20. package/build/cjs/core/polymorphism.js.map +1 -0
  21. package/build/cjs/core/tokens.js +2 -0
  22. package/build/cjs/core/tokens.js.map +1 -0
  23. package/build/cjs/core/types.js +2 -0
  24. package/build/cjs/core/types.js.map +1 -0
  25. package/build/cjs/core/utils/breakpoints.js +2 -0
  26. package/build/cjs/core/utils/breakpoints.js.map +1 -0
  27. package/build/cjs/core/utils/density.js +2 -0
  28. package/build/cjs/core/utils/density.js.map +1 -0
  29. package/build/cjs/core/utils/getValuePair.js +2 -0
  30. package/build/cjs/core/utils/getValuePair.js.map +1 -0
  31. package/build/cjs/core/utils/index.js +2 -0
  32. package/build/cjs/core/utils/index.js.map +1 -0
  33. package/build/cjs/core/utils/mergeProps.js +2 -0
  34. package/build/cjs/core/utils/mergeProps.js.map +1 -0
  35. package/build/cjs/core/utils/mergeRefs.js +2 -0
  36. package/build/cjs/core/utils/mergeRefs.js.map +1 -0
  37. package/build/cjs/core/utils/motion.js +2 -0
  38. package/build/cjs/core/utils/motion.js.map +1 -0
  39. package/build/cjs/core/utils/tabListener.js +2 -0
  40. package/build/cjs/core/utils/tabListener.js.map +1 -0
  41. package/build/cjs/hooks/index.js +2 -0
  42. package/build/cjs/hooks/index.js.map +1 -0
  43. package/build/cjs/hooks/mediaQueryUtils.js +2 -0
  44. package/build/cjs/hooks/mediaQueryUtils.js.map +1 -0
  45. package/build/cjs/hooks/useAnimatedDetails/index.js +2 -0
  46. package/build/cjs/hooks/useAnimatedDetails/index.js.map +1 -0
  47. package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.js +2 -0
  48. package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.js.map +1 -0
  49. package/build/cjs/hooks/useAnimatedHeight/index.js +2 -0
  50. package/build/cjs/hooks/useAnimatedHeight/index.js.map +1 -0
  51. package/build/cjs/hooks/useAnimatedHeight/types.js +2 -0
  52. package/build/cjs/hooks/useAnimatedHeight/types.js.map +1 -0
  53. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.js +2 -0
  54. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.js.map +1 -0
  55. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.js +2 -0
  56. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -0
  57. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.js +2 -0
  58. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -0
  59. package/build/cjs/hooks/useAriaLiveRegion/index.js +2 -0
  60. package/build/cjs/hooks/useAriaLiveRegion/index.js.map +1 -0
  61. package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.js +2 -0
  62. package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.js.map +1 -0
  63. package/build/cjs/hooks/useBrowserPreferences/index.js +2 -0
  64. package/build/cjs/hooks/useBrowserPreferences/index.js.map +1 -0
  65. package/build/cjs/hooks/useBrowserPreferences/useBrowserPreferences.js +2 -0
  66. package/build/cjs/hooks/useBrowserPreferences/useBrowserPreferences.js.map +1 -0
  67. package/build/cjs/hooks/useClickOutside/index.js +2 -0
  68. package/build/cjs/hooks/useClickOutside/index.js.map +1 -0
  69. package/build/cjs/hooks/useClickOutside/useClickOutside.js +2 -0
  70. package/build/cjs/hooks/useClickOutside/useClickOutside.js.map +1 -0
  71. package/build/cjs/hooks/useElementDimensions/index.js +2 -0
  72. package/build/cjs/hooks/useElementDimensions/index.js.map +1 -0
  73. package/build/cjs/hooks/useElementDimensions/useElementDimensions.js +2 -0
  74. package/build/cjs/hooks/useElementDimensions/useElementDimensions.js.map +1 -0
  75. package/build/cjs/hooks/useFocusOutside/index.js +2 -0
  76. package/build/cjs/hooks/useFocusOutside/index.js.map +1 -0
  77. package/build/cjs/hooks/useFocusOutside/useFocusOutside.js +2 -0
  78. package/build/cjs/hooks/useFocusOutside/useFocusOutside.js.map +1 -0
  79. package/build/cjs/hooks/useId/index.js +2 -0
  80. package/build/cjs/hooks/useId/index.js.map +1 -0
  81. package/build/cjs/hooks/useId/useId.js +2 -0
  82. package/build/cjs/hooks/useId/useId.js.map +1 -0
  83. package/build/cjs/hooks/useIntersectionObserver/index.js +2 -0
  84. package/build/cjs/hooks/useIntersectionObserver/index.js.map +1 -0
  85. package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.js +2 -0
  86. package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -0
  87. package/build/cjs/hooks/useKeyListener/index.js +2 -0
  88. package/build/cjs/hooks/useKeyListener/index.js.map +1 -0
  89. package/build/cjs/hooks/useKeyListener/useKeyListener.js +2 -0
  90. package/build/cjs/hooks/useKeyListener/useKeyListener.js.map +1 -0
  91. package/build/cjs/hooks/useListNavigation/index.js +2 -0
  92. package/build/cjs/hooks/useListNavigation/index.js.map +1 -0
  93. package/build/cjs/hooks/useListNavigation/useListNavigation.js +2 -0
  94. package/build/cjs/hooks/useListNavigation/useListNavigation.js.map +1 -0
  95. package/build/cjs/hooks/useLocalStorage/index.js +2 -0
  96. package/build/cjs/hooks/useLocalStorage/index.js.map +1 -0
  97. package/build/cjs/hooks/useLocalStorage/useLocalStorage.js +2 -0
  98. package/build/cjs/hooks/useLocalStorage/useLocalStorage.js.map +1 -0
  99. package/build/cjs/hooks/useMutationObserver/index.js +2 -0
  100. package/build/cjs/hooks/useMutationObserver/index.js.map +1 -0
  101. package/build/cjs/hooks/useMutationObserver/useMutationObserver.js +2 -0
  102. package/build/cjs/hooks/useMutationObserver/useMutationObserver.js.map +1 -0
  103. package/build/cjs/hooks/usePreviousValue/index.js +2 -0
  104. package/build/cjs/hooks/usePreviousValue/index.js.map +1 -0
  105. package/build/cjs/hooks/usePreviousValue/usePreviousValue.js +2 -0
  106. package/build/cjs/hooks/usePreviousValue/usePreviousValue.js.map +1 -0
  107. package/build/cjs/hooks/useProgressiveImg/index.js +2 -0
  108. package/build/cjs/hooks/useProgressiveImg/index.js.map +1 -0
  109. package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.js +2 -0
  110. package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.js.map +1 -0
  111. package/build/cjs/hooks/useScreen/index.js +2 -0
  112. package/build/cjs/hooks/useScreen/index.js.map +1 -0
  113. package/build/cjs/hooks/useScreen/state.js +2 -0
  114. package/build/cjs/hooks/useScreen/state.js.map +1 -0
  115. package/build/cjs/hooks/useScreen/useScreen.js +2 -0
  116. package/build/cjs/hooks/useScreen/useScreen.js.map +1 -0
  117. package/build/cjs/hooks/useScrollIntoView/index.js +2 -0
  118. package/build/cjs/hooks/useScrollIntoView/index.js.map +1 -0
  119. package/build/cjs/hooks/useScrollIntoView/useScrollIntoView.js +2 -0
  120. package/build/cjs/hooks/useScrollIntoView/useScrollIntoView.js.map +1 -0
  121. package/build/cjs/hooks/useSwipeGesture/index.js +2 -0
  122. package/build/cjs/hooks/useSwipeGesture/index.js.map +1 -0
  123. package/build/cjs/hooks/useSwipeGesture/useSwipeGesture.js +2 -0
  124. package/build/cjs/hooks/useSwipeGesture/useSwipeGesture.js.map +1 -0
  125. package/build/clsx-BeLtu-UY.js +2 -0
  126. package/build/clsx-BeLtu-UY.js.map +1 -0
  127. package/build/clsx-E3yX_9sL.cjs +2 -0
  128. package/build/clsx-E3yX_9sL.cjs.map +1 -0
  129. package/build/components/ScreenReaderOnly.d.ts +6 -0
  130. package/build/components/SlotComponent.d.ts +7 -0
  131. package/build/components/index.d.ts +2 -0
  132. package/build/components/navigation/Link.d.ts +5 -0
  133. package/build/components/navigation/NavLink.d.ts +6 -0
  134. package/build/components/navigation/index.d.ts +2 -0
  135. package/build/core/as-child.d.ts +39 -0
  136. package/build/core/index.d.ts +7 -0
  137. package/build/core/polymorphism.d.ts +11 -0
  138. package/build/core/tokens.d.ts +351 -0
  139. package/build/core/types.d.ts +42 -0
  140. package/build/core/utils/breakpoints.d.ts +6 -0
  141. package/build/core/utils/density.d.ts +1 -0
  142. package/build/core/utils/getValuePair.d.ts +2 -0
  143. package/build/core/utils/index.d.ts +8 -0
  144. package/build/core/utils/mergeProps.d.ts +3 -0
  145. package/build/core/utils/mergeRefs.d.ts +3 -0
  146. package/build/core/utils/motion.d.ts +16 -0
  147. package/build/core/utils/tabListener.d.ts +1 -0
  148. package/build/es/components/ScreenReaderOnly.js +2 -0
  149. package/build/es/components/ScreenReaderOnly.js.map +1 -0
  150. package/build/es/components/SlotComponent.js +2 -0
  151. package/build/es/components/SlotComponent.js.map +1 -0
  152. package/build/es/components/index.js +2 -0
  153. package/build/es/components/index.js.map +1 -0
  154. package/build/es/components/navigation/Link.js +2 -0
  155. package/build/es/components/navigation/Link.js.map +1 -0
  156. package/build/es/components/navigation/NavLink.js +2 -0
  157. package/build/es/components/navigation/NavLink.js.map +1 -0
  158. package/build/es/components/navigation/index.js +2 -0
  159. package/build/es/components/navigation/index.js.map +1 -0
  160. package/build/es/core/as-child.js +2 -0
  161. package/build/es/core/as-child.js.map +1 -0
  162. package/build/es/core/index.js +2 -0
  163. package/build/es/core/index.js.map +1 -0
  164. package/build/es/core/polymorphism.js +2 -0
  165. package/build/es/core/polymorphism.js.map +1 -0
  166. package/build/es/core/tokens.js +2 -0
  167. package/build/es/core/tokens.js.map +1 -0
  168. package/build/es/core/types.js +2 -0
  169. package/build/es/core/types.js.map +1 -0
  170. package/build/es/core/utils/breakpoints.js +2 -0
  171. package/build/es/core/utils/breakpoints.js.map +1 -0
  172. package/build/es/core/utils/density.js +2 -0
  173. package/build/es/core/utils/density.js.map +1 -0
  174. package/build/es/core/utils/getValuePair.js +2 -0
  175. package/build/es/core/utils/getValuePair.js.map +1 -0
  176. package/build/es/core/utils/index.js +2 -0
  177. package/build/es/core/utils/index.js.map +1 -0
  178. package/build/es/core/utils/mergeProps.js +2 -0
  179. package/build/es/core/utils/mergeProps.js.map +1 -0
  180. package/build/es/core/utils/mergeRefs.js +2 -0
  181. package/build/es/core/utils/mergeRefs.js.map +1 -0
  182. package/build/es/core/utils/motion.js +2 -0
  183. package/build/es/core/utils/motion.js.map +1 -0
  184. package/build/es/core/utils/tabListener.js +2 -0
  185. package/build/es/core/utils/tabListener.js.map +1 -0
  186. package/build/es/hooks/index.js +2 -0
  187. package/build/es/hooks/index.js.map +1 -0
  188. package/build/es/hooks/mediaQueryUtils.js +2 -0
  189. package/build/es/hooks/mediaQueryUtils.js.map +1 -0
  190. package/build/es/hooks/useAnimatedDetails/index.js +2 -0
  191. package/build/es/hooks/useAnimatedDetails/index.js.map +1 -0
  192. package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js +2 -0
  193. package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js.map +1 -0
  194. package/build/es/hooks/useAnimatedHeight/index.js +2 -0
  195. package/build/es/hooks/useAnimatedHeight/index.js.map +1 -0
  196. package/build/es/hooks/useAnimatedHeight/types.js +2 -0
  197. package/build/es/hooks/useAnimatedHeight/types.js.map +1 -0
  198. package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js +2 -0
  199. package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js.map +1 -0
  200. package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js +2 -0
  201. package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -0
  202. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js +2 -0
  203. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -0
  204. package/build/es/hooks/useAriaLiveRegion/index.js +2 -0
  205. package/build/es/hooks/useAriaLiveRegion/index.js.map +1 -0
  206. package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.js +2 -0
  207. package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.js.map +1 -0
  208. package/build/es/hooks/useBrowserPreferences/index.js +2 -0
  209. package/build/es/hooks/useBrowserPreferences/index.js.map +1 -0
  210. package/build/es/hooks/useBrowserPreferences/useBrowserPreferences.js +2 -0
  211. package/build/es/hooks/useBrowserPreferences/useBrowserPreferences.js.map +1 -0
  212. package/build/es/hooks/useClickOutside/index.js +2 -0
  213. package/build/es/hooks/useClickOutside/index.js.map +1 -0
  214. package/build/es/hooks/useClickOutside/useClickOutside.js +2 -0
  215. package/build/es/hooks/useClickOutside/useClickOutside.js.map +1 -0
  216. package/build/es/hooks/useElementDimensions/index.js +2 -0
  217. package/build/es/hooks/useElementDimensions/index.js.map +1 -0
  218. package/build/es/hooks/useElementDimensions/useElementDimensions.js +2 -0
  219. package/build/es/hooks/useElementDimensions/useElementDimensions.js.map +1 -0
  220. package/build/es/hooks/useFocusOutside/index.js +2 -0
  221. package/build/es/hooks/useFocusOutside/index.js.map +1 -0
  222. package/build/es/hooks/useFocusOutside/useFocusOutside.js +2 -0
  223. package/build/es/hooks/useFocusOutside/useFocusOutside.js.map +1 -0
  224. package/build/es/hooks/useId/index.js +2 -0
  225. package/build/es/hooks/useId/index.js.map +1 -0
  226. package/build/es/hooks/useId/useId.js +2 -0
  227. package/build/es/hooks/useId/useId.js.map +1 -0
  228. package/build/es/hooks/useIntersectionObserver/index.js +2 -0
  229. package/build/es/hooks/useIntersectionObserver/index.js.map +1 -0
  230. package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js +2 -0
  231. package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -0
  232. package/build/es/hooks/useKeyListener/index.js +2 -0
  233. package/build/es/hooks/useKeyListener/index.js.map +1 -0
  234. package/build/es/hooks/useKeyListener/useKeyListener.js +2 -0
  235. package/build/es/hooks/useKeyListener/useKeyListener.js.map +1 -0
  236. package/build/es/hooks/useListNavigation/index.js +2 -0
  237. package/build/es/hooks/useListNavigation/index.js.map +1 -0
  238. package/build/es/hooks/useListNavigation/useListNavigation.js +2 -0
  239. package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -0
  240. package/build/es/hooks/useLocalStorage/index.js +2 -0
  241. package/build/es/hooks/useLocalStorage/index.js.map +1 -0
  242. package/build/es/hooks/useLocalStorage/useLocalStorage.js +2 -0
  243. package/build/es/hooks/useLocalStorage/useLocalStorage.js.map +1 -0
  244. package/build/es/hooks/useMutationObserver/index.js +2 -0
  245. package/build/es/hooks/useMutationObserver/index.js.map +1 -0
  246. package/build/es/hooks/useMutationObserver/useMutationObserver.js +2 -0
  247. package/build/es/hooks/useMutationObserver/useMutationObserver.js.map +1 -0
  248. package/build/es/hooks/usePreviousValue/index.js +2 -0
  249. package/build/es/hooks/usePreviousValue/index.js.map +1 -0
  250. package/build/es/hooks/usePreviousValue/usePreviousValue.js +2 -0
  251. package/build/es/hooks/usePreviousValue/usePreviousValue.js.map +1 -0
  252. package/build/es/hooks/useProgressiveImg/index.js +2 -0
  253. package/build/es/hooks/useProgressiveImg/index.js.map +1 -0
  254. package/build/es/hooks/useProgressiveImg/useProgressiveImg.js +2 -0
  255. package/build/es/hooks/useProgressiveImg/useProgressiveImg.js.map +1 -0
  256. package/build/es/hooks/useScreen/index.js +2 -0
  257. package/build/es/hooks/useScreen/index.js.map +1 -0
  258. package/build/es/hooks/useScreen/state.js +2 -0
  259. package/build/es/hooks/useScreen/state.js.map +1 -0
  260. package/build/es/hooks/useScreen/useScreen.js +2 -0
  261. package/build/es/hooks/useScreen/useScreen.js.map +1 -0
  262. package/build/es/hooks/useScrollIntoView/index.js +2 -0
  263. package/build/es/hooks/useScrollIntoView/index.js.map +1 -0
  264. package/build/es/hooks/useScrollIntoView/useScrollIntoView.js +2 -0
  265. package/build/es/hooks/useScrollIntoView/useScrollIntoView.js.map +1 -0
  266. package/build/es/hooks/useSwipeGesture/index.js +2 -0
  267. package/build/es/hooks/useSwipeGesture/index.js.map +1 -0
  268. package/build/es/hooks/useSwipeGesture/useSwipeGesture.js +2 -0
  269. package/build/es/hooks/useSwipeGesture/useSwipeGesture.js.map +1 -0
  270. package/build/hooks/index.d.ts +18 -0
  271. package/build/hooks/mediaQueryUtils.d.ts +21 -0
  272. package/build/hooks/useAnimatedDetails/index.d.ts +1 -0
  273. package/build/hooks/useAnimatedDetails/useAnimatedDetails.d.ts +20 -0
  274. package/build/hooks/useAnimatedHeight/index.d.ts +4 -0
  275. package/build/hooks/useAnimatedHeight/types.d.ts +26 -0
  276. package/build/hooks/useAnimatedHeight/useAnimatedHeight.d.ts +10 -0
  277. package/build/hooks/useAnimatedHeight/useAnimatedHeightBetween.d.ts +10 -0
  278. package/build/hooks/useAnimatedHeight/useAutoAnimateHeight.d.ts +20 -0
  279. package/build/hooks/useAriaLiveRegion/index.d.ts +1 -0
  280. package/build/hooks/useAriaLiveRegion/useAriaLiveRegion.d.ts +15 -0
  281. package/build/hooks/useBrowserPreferences/index.d.ts +1 -0
  282. package/build/hooks/useBrowserPreferences/useBrowserPreferences.d.ts +12 -0
  283. package/build/hooks/useClickOutside/index.d.ts +1 -0
  284. package/build/hooks/useClickOutside/useClickOutside.d.ts +7 -0
  285. package/build/hooks/useElementDimensions/index.d.ts +1 -0
  286. package/build/hooks/useElementDimensions/useElementDimensions.d.ts +11 -0
  287. package/build/hooks/useFocusOutside/index.d.ts +1 -0
  288. package/build/hooks/useFocusOutside/useFocusOutside.d.ts +7 -0
  289. package/build/hooks/useId/index.d.ts +1 -0
  290. package/build/hooks/useId/useId.d.ts +11 -0
  291. package/build/hooks/useIntersectionObserver/index.d.ts +1 -0
  292. package/build/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +13 -0
  293. package/build/hooks/useKeyListener/index.d.ts +1 -0
  294. package/build/hooks/useKeyListener/useKeyListener.d.ts +8 -0
  295. package/build/hooks/useListNavigation/index.d.ts +1 -0
  296. package/build/hooks/useListNavigation/useListNavigation.d.ts +7 -0
  297. package/build/hooks/useLocalStorage/index.d.ts +1 -0
  298. package/build/hooks/useLocalStorage/useLocalStorage.d.ts +1 -0
  299. package/build/hooks/useMutationObserver/index.d.ts +1 -0
  300. package/build/hooks/useMutationObserver/useMutationObserver.d.ts +9 -0
  301. package/build/hooks/usePreviousValue/index.d.ts +1 -0
  302. package/build/hooks/usePreviousValue/usePreviousValue.d.ts +6 -0
  303. package/build/hooks/useProgressiveImg/index.d.ts +1 -0
  304. package/build/hooks/useProgressiveImg/useProgressiveImg.d.ts +10 -0
  305. package/build/hooks/useScreen/index.d.ts +2 -0
  306. package/build/hooks/useScreen/state.d.ts +17 -0
  307. package/build/hooks/useScreen/useScreen.d.ts +6 -0
  308. package/build/hooks/useScrollIntoView/index.d.ts +1 -0
  309. package/build/hooks/useScrollIntoView/useScrollIntoView.d.ts +11 -0
  310. package/build/hooks/useSwipeGesture/index.d.ts +1 -0
  311. package/build/hooks/useSwipeGesture/useSwipeGesture.d.ts +27 -0
  312. package/package.json +83 -0
  313. package/src/components/navigation/styles/link.css +152 -0
  314. package/src/components/navigation/styles/link.min.css +1 -0
  315. package/src/components/navigation/styles/link.scss +138 -0
  316. package/src/core/jkl/_colors.scss +26 -0
  317. package/src/core/jkl/_convert.scss +96 -0
  318. package/src/core/jkl/_helpers.scss +20 -0
  319. package/src/core/jkl/_index.scss +18 -0
  320. package/src/core/jkl/_legacy-tokens.scss +22 -0
  321. package/src/core/jkl/_motion.scss +62 -0
  322. package/src/core/jkl/_navigation.scss +9 -0
  323. package/src/core/jkl/_ornaments.scss +26 -0
  324. package/src/core/jkl/_reset.scss +43 -0
  325. package/src/core/jkl/_responsive-units.scss +30 -0
  326. package/src/core/jkl/_screenreader.scss +59 -0
  327. package/src/core/jkl/_screens.scss +135 -0
  328. package/src/core/jkl/_shadows.scss +25 -0
  329. package/src/core/jkl/_spacing.scss +210 -0
  330. package/src/core/jkl/_theme.scss +144 -0
  331. package/src/core/jkl/_tokens.scss +148 -0
  332. package/src/core/jkl/_typography.scss +327 -0
  333. package/src/core/jkl/_underline.scss +16 -0
  334. package/src/core/jkl/_z-index.scss +23 -0
  335. package/src/core/styles/_color-tokens.scss +75 -0
  336. package/src/core/styles/_headings.scss +29 -0
  337. package/src/core/styles/_index.scss +10 -0
  338. package/src/core/styles/_legacy-tokens.scss +26 -0
  339. package/src/core/styles/_normalize.scss +250 -0
  340. package/src/core/styles/_paragraphs.scss +16 -0
  341. package/src/core/styles/_reset.scss +66 -0
  342. package/src/core/styles/_screen-reader.scss +9 -0
  343. package/src/core/styles/_spacing.scss +75 -0
  344. package/src/core/styles/_tokens.scss +114 -0
  345. package/src/core/styles/core.css +1614 -0
  346. package/src/core/styles/core.min.css +1 -0
  347. package/src/core/styles/core.scss +71 -0
  348. package/src/core/styles/vind/_flex.scss +113 -0
  349. package/src/core/styles/vind/_font.scss +19 -0
  350. package/src/core/styles/vind/_margin.scss +43 -0
  351. package/src/core/styles/vind/_padding.scss +43 -0
  352. package/src/core/styles/vind/_space-between.scss +13 -0
  353. package/src/core/styles/vind/_typography.scss +47 -0
  354. package/src/core/styles/vind/_vind.scss +6 -0
  355. package/src/core/styles/vind.css +1742 -0
  356. package/src/core/styles/vind.min.css +1 -0
  357. package/src/core/styles/vind.scss +3 -0
  358. package/src/core/tokens.less +196 -0
@@ -0,0 +1,59 @@
1
+ /// Improved screen reader only CSS class
2
+ /// @author Gaël Poupard
3
+ /// licence https://codepen.io/ffoodd/pen/gwKZyq/license
4
+ /// Based on Yahoo!'s technique
5
+ /// @author Thierry Koblentz
6
+ /// @link https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html
7
+ /// 1.
8
+ /// `clip` is deprecated but works everywhere
9
+ /// @link https://developer.mozilla.org/en-US/docs/Web/CSS/clip
10
+ /// 2.
11
+ /// `clip-path` is the future-proof version, but not very well supported yet
12
+ /// @link https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path
13
+ /// @link http://caniuse.com/#search=clip-path
14
+ /// @author Yvain Liechti
15
+ /// @link https://twitter.com/ryuran78/status/778943389819604992
16
+ /// 3.
17
+ /// preventing text to be condensed
18
+ /// @author J. Renée Beach
19
+ /// @link https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
20
+ /// Drupal 8 goes with word-wrap: normal instead
21
+ /// @link https://www.drupal.org/node/2045151
22
+ /// @link http://cgit.drupalcode.org/drupal/commit/?id=5b847ea
23
+ /// 4.
24
+ /// !important is important
25
+ /// Obviously you wanna hide something
26
+ /// @author Harry Roberts
27
+ /// @link https://csswizardry.com/2016/05/the-importance-of-important/
28
+ @mixin screenreader-only {
29
+ border: 0 !important;
30
+ clip: rect(1px, 1px, 1px, 1px) !important; /* 1 */
31
+ clip-path: inset(50%) !important; /* 2 */
32
+ height: 1px !important;
33
+ margin: -1px !important;
34
+ overflow: hidden !important;
35
+ padding: 0 !important;
36
+ position: absolute !important;
37
+ width: 1px !important;
38
+ white-space: nowrap !important; /* 3 */
39
+ }
40
+
41
+ /// Use in conjunction with .sr-only to only display content when it's focused.
42
+ /// Useful for skip links
43
+ /// @link http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
44
+ /// Based on a HTML5 Boilerplate technique, included in Bootstrap
45
+ /// Fixed a bug with position: static on iOS 10.0.2 + VoiceOver
46
+ /// @author Sylvain Pigeard
47
+ /// @link https://github.com/twbs/bootstrap/issues/20732
48
+ @mixin screenreader-only-focusable {
49
+ &:focus,
50
+ &:active {
51
+ clip: auto !important;
52
+ clip-path: none !important;
53
+ height: auto !important;
54
+ margin: auto !important;
55
+ overflow: visible !important;
56
+ width: auto !important;
57
+ white-space: normal !important;
58
+ }
59
+ }
@@ -0,0 +1,135 @@
1
+ /// @type Number
2
+ $breakpoint--medium: 680px;
3
+
4
+ /// @type Number
5
+ $breakpoint--large: 1200px;
6
+
7
+ /// @type Number
8
+ $breakpoint--xl: 1600px;
9
+
10
+ /// Forenkler media queries som skal gjelde mellom to skjermbredder.
11
+ /// Maksverdien er _eksklusiv_ (verdien vil bli $max - 1px).
12
+ /// @content Plasseres i et media query med min-width lik $min og max-width lik $max - 1px
13
+ /// @example
14
+ /// .class {
15
+ /// @include jkl.screen-between(42px, 420px) {
16
+ /// display: none;
17
+ /// }
18
+ /// }
19
+ @mixin screen-between($min, $max) {
20
+ @media (min-width: $min) and (max-width: #{$max - 1px}) {
21
+ @content;
22
+ }
23
+ }
24
+
25
+ /// Forenkler å skrive CSS som skal gjelde fra en viss pixelbredde og oppover.
26
+ /// @content Plasseres i et media query med min-width lik $min
27
+ /// @example
28
+ /// .class {
29
+ /// @include jkl.screen-from(42px) {
30
+ /// display: none;
31
+ /// }
32
+ /// }
33
+ @mixin screen-from($min) {
34
+ @media (min-width: $min) {
35
+ @content;
36
+ }
37
+ }
38
+
39
+ /// Forenkler å skrive CSS som skal gjelde opp til en viss pixelbredde
40
+ /// @content Plasseres i et media query med max-width lik $max - 1
41
+ /// @example
42
+ /// .class {
43
+ /// @include jkl.screen-to(375px) {
44
+ /// display: none;
45
+ /// }
46
+ /// }
47
+ @mixin screen-to($max) {
48
+ @media (width >= 0) and (max-width: #{$max - 1px}) {
49
+ @content;
50
+ }
51
+ }
52
+
53
+ /// Forenkler å skrive CSS som skal gjelde for hva Jøkul definerer som små skjermer.
54
+ /// @content Plasseres i et media query for små skjermer
55
+ /// @example
56
+ /// .class {
57
+ /// @include jkl.small-device {
58
+ /// display: none;
59
+ /// }
60
+ /// }
61
+ @mixin small-device {
62
+ @media (width >= 0) and (max-width: #{$breakpoint--medium - 1px}) {
63
+ @content;
64
+ }
65
+ }
66
+
67
+ /// Forenkler å skrive CSS som skal gjelde for hva Jøkul definerer som mellomstore skjermer.
68
+ /// @content Plasseres i et media query for mellomstore skjermer
69
+ /// @example
70
+ /// .class {
71
+ /// @include jkl.medium-device {
72
+ /// display: none;
73
+ /// }
74
+ /// }
75
+ @mixin medium-device {
76
+ @media (min-width: #{$breakpoint--medium}) and (max-width: #{$breakpoint--large - 1px}) {
77
+ @content;
78
+ }
79
+ }
80
+
81
+ /// Forenkler å skrive CSS som skal gjelde for hva Jøkul definerer som mellomstore skjermer _og større_
82
+ /// @content Plasseres i et media query som gjelder mellomstore skjermer og oppover
83
+ /// @example
84
+ /// .class {
85
+ /// @include jkl.from-medium-device {
86
+ /// display: none;
87
+ /// }
88
+ /// }
89
+ @mixin from-medium-device {
90
+ @media (min-width: #{$breakpoint--medium}) {
91
+ @content;
92
+ }
93
+ }
94
+
95
+ /// Forenkler å skrive CSS som skal gjelde for hva Jøkul definerer som store skjermer.
96
+ /// @content Plasseres i et media query for store skjermer
97
+ /// @example
98
+ /// .class {
99
+ /// @include jkl.large-device {
100
+ /// display: none;
101
+ /// }
102
+ /// }
103
+ @mixin large-device {
104
+ @media (min-width: #{$breakpoint--large}) and (max-width: #{$breakpoint--xl - 1px}) {
105
+ @content;
106
+ }
107
+ }
108
+
109
+ /// Forenkler å skrive CSS som skal gjelde for hva Jøkul definerer som store skjermer _og større_
110
+ /// @content Plasseres i et media query som gjelder store skjermer og oppover
111
+ /// @example
112
+ /// .class {
113
+ /// @include jkl.from-large-device {
114
+ /// display: none;
115
+ /// }
116
+ /// }
117
+ @mixin from-large-device {
118
+ @media (min-width: #{$breakpoint--large}) {
119
+ @content;
120
+ }
121
+ }
122
+
123
+ /// Forenkler å skrive CSS som skal gjelde for hva Jøkul definerer som ekstra store skjermer.
124
+ /// @content Plasseres i et media query for ekstra store skjermer
125
+ /// @example
126
+ /// .class {
127
+ /// @include jkl.xl-device {
128
+ /// display: none;
129
+ /// }
130
+ /// }
131
+ @mixin xl-device {
132
+ @media (min-width: #{$breakpoint--xl}) {
133
+ @content;
134
+ }
135
+ }
@@ -0,0 +1,25 @@
1
+ @use "responsive-units" as ru;
2
+
3
+ /// Skygge som indikerer at noe er klikkbart og vil ta deg til et annet sted
4
+ /// @type List
5
+ $shadow-navigation: 0 ru.rem(4px) ru.rem(15px) rgb(37 42 49 / 10%);
6
+
7
+ /// Skygge som indikerer at pekeren er over noe sin er klikkbart og vil ta deg til et annet sted
8
+ /// @type List
9
+ $shadow-navigation--hover: 0 ru.rem(6px) ru.rem(25px) rgb(37 42 49 / 12%);
10
+
11
+ /// Skygge som indikerer at noe er klikkbart og at klikk vil gjøre en endring på nåværende side
12
+ /// @type List
13
+ $shadow-task-card: 0 ru.rem(4px) ru.rem(12px) rgb(37 42 49 / 3%);
14
+
15
+ /// @type List
16
+ /// @deprecated Se tilgjengelige skygger i _shadows.scss
17
+ $drop-shadow--small: 0 ru.rem(4px) ru.rem(8px) rgb(0 0 0 / 8%);
18
+
19
+ /// @type List
20
+ /// @deprecated Se tilgjengelige skygger i _shadows.scss
21
+ $drop-shadow--medium: ru.rem(4px) ru.rem(4px) ru.rem(8px) rgb(0 0 0 / 8%);
22
+
23
+ /// @type List
24
+ /// @deprecated Se tilgjengelige skygger i _shadows.scss
25
+ $drop-shadow--large: ru.rem(4px) ru.rem(6px) ru.rem(16px) rgb(0 0 0 / 15%);
@@ -0,0 +1,210 @@
1
+ @use "sass:string";
2
+ @use "sass:map";
3
+ @use "sass:list";
4
+ @use "screens";
5
+ @use "tokens" as *;
6
+
7
+ /// Tilsvarer 2px
8
+ /// @deprecated Bruk heller $spacing-2
9
+ /// @type Number
10
+ $spacing-3xs: $spacing-2;
11
+
12
+ /// Tilsvarer 4px
13
+ /// @deprecated Bruk heller $spacing-4
14
+ /// @type Number
15
+ $spacing-2xs: $spacing-4;
16
+
17
+ /// Tilsvarer 8px
18
+ /// @deprecated Bruk heller $spacing-8
19
+ /// @type Number
20
+ $spacing-xs: $spacing-8;
21
+
22
+ /// Tilsvarer 12px
23
+ /// @deprecated Bruk heller $spacing-12
24
+ /// @type Number
25
+ $spacing-s: $spacing-12;
26
+
27
+ /// Tilsvarer 16px
28
+ /// @deprecated Bruk heller $spacing-16
29
+ /// @type Number
30
+ $spacing-m: $spacing-16;
31
+
32
+ /// Tilsvarer 24px
33
+ /// @deprecated Bruk heller $spacing-24
34
+ /// @type Number
35
+ $spacing-l: $spacing-24;
36
+
37
+ /// Tilsvarer 40px
38
+ /// @deprecated Bruk heller $spacing-40
39
+ /// @type Number
40
+ $spacing-xl: $spacing-40;
41
+
42
+ /// Tilsvarer 64px
43
+ /// @deprecated Bruk heller $spacing-64
44
+ /// @type Number
45
+ $spacing-2xl: $spacing-64;
46
+
47
+ /// Tilsvarer 104px
48
+ /// @deprecated Bruk heller $spacing-104
49
+ /// @type Number
50
+ $spacing-3xl: $spacing-104;
51
+
52
+ /// Tilsvarer 168px
53
+ /// @deprecated Bruk heller $spacing-168
54
+ /// @type Number
55
+ $spacing-4xl: $spacing-168;
56
+
57
+ /// Lar deg gjøre oppslag på navnet uten `spacing`-prefix for å få ut rem-verdien
58
+ /// @type Map
59
+ $spacing: (
60
+ "2": $spacing-2,
61
+ "4": $spacing-4,
62
+ "8": $spacing-8,
63
+ "12": $spacing-12,
64
+ "16": $spacing-16,
65
+ "24": $spacing-24,
66
+ "32": $spacing-32,
67
+ "40": $spacing-40,
68
+ "64": $spacing-64,
69
+ "104": $spacing-104,
70
+ "168": $spacing-168,
71
+ // Gamle t-skjortestørrelser for kompatibilitet
72
+ "3xs": $spacing-3xs,
73
+ "2xs": $spacing-2xs,
74
+ "xs": $spacing-xs,
75
+ "s": $spacing-s,
76
+ "m": $spacing-m,
77
+ "l": $spacing-l,
78
+ "xl": $spacing-xl,
79
+ "2xl": $spacing-2xl,
80
+ "3xl": $spacing-3xl,
81
+ "4xl": $spacing-4xl,
82
+ );
83
+
84
+ /// Her defineres kombinasjoner av spacinger til bruk i nytteklasser for spacing.
85
+ /// Nytteklasser for alle enkeltspacinger, samt kombinasjoner, i denne listen
86
+ /// blir automatisk generert i core.css, med versjoner for alle posisjoner (top, right, etc.).
87
+ /// @type Map
88
+ $combinations: (
89
+ "2",
90
+ "4",
91
+ "8",
92
+ "12",
93
+ "16",
94
+ "24",
95
+ "32",
96
+ "40",
97
+ "64",
98
+ "104",
99
+ "168",
100
+ "16" "24",
101
+ "24" "40",
102
+ "24" "32",
103
+ "32" "40",
104
+ "40" "64",
105
+ "64" "104",
106
+ "104" "168",
107
+ "16" "16" "24",
108
+ "16" "24" "32",
109
+ "16" "24" "40",
110
+ "24" "24" "32",
111
+ "24" "24" "40",
112
+ "24" "32" "40",
113
+ "32" "32" "40",
114
+ "32" "40" "64",
115
+ "40" "40" "64",
116
+ "40" "64" "104",
117
+ "64" "64" "104",
118
+ "64" "104" "168",
119
+ "104" "104" "168"
120
+ );
121
+
122
+ /// Posisjoner som kan benyttes for spacing
123
+ /// @type Map
124
+ $positions: (top, bottom, left, right);
125
+
126
+ /// Deler opp en streng i substrenger, gitt et tegn du vil bruke som avdeler.
127
+ /// @param { string } $string En streng du vil dele opp
128
+ /// @param { string } $delimiter [null] En string du vil bruke som avdeler, f.eks. komma
129
+ /// @return { list } Returnerer en liste med substrenger
130
+ /// @example
131
+ /// splitString("24/40", "/"); // "24", "40"
132
+ @function _split-string($string, $delimiter: null) {
133
+ // Returner en liste med uendret streng hvis ingen separator er satt, eller strengen er tom
134
+ @if not $delimiter or string.length($string) == 0 {
135
+ @return ($string);
136
+ }
137
+
138
+ // Finn index til separatoren
139
+ $delimiter-index: string.index($string, $delimiter);
140
+
141
+ // Returner en liste med uendret streng hvis ikke separatoren finnes i strengen
142
+ @if not $delimiter-index {
143
+ @return ($string);
144
+ }
145
+
146
+ $first-value: string.slice($string, 0, $delimiter-index - 1);
147
+ // Finn eventuelt flere substrenger ved å kjøre funksjonen rekursivt
148
+ $other-values: _split-string(string.slice($string, $delimiter-index + 1), $delimiter);
149
+
150
+ // Returner en kommaseparert liste over substrengene
151
+ @return list.join($first-value, $other-values, "comma");
152
+ }
153
+
154
+ /// Setter marginer ut fra et steg i spacing-skalaen
155
+ /// @param {"2" | "4" | "8" | "12" | "16" | "24" | "32" | "40" | "64" | "104" | "168"} $spacing-step Et steg i spacingskalaen
156
+ /// @param {"top" | "right" | "bottom" | "left"} $position En posisjon du vil sette spacingen i
157
+ /// @output margin-<posisjon>: <verdi i spacing-skalaen>;
158
+ @mixin _single-spacing($spacing-step, $position) {
159
+ @if $position and list.index($positions, $position) {
160
+ // Legg til bindestrek foran posisjonen for enklere interpolering
161
+ $position: "-#{$position}";
162
+ }
163
+
164
+ @if map.has-key($spacing, $spacing-step) {
165
+ margin#{$position}: map.get($spacing, $spacing-step);
166
+ } @else {
167
+ @error "Fant ikke \"#{$spacing-step}\" i våre spacing-verdier";
168
+ }
169
+ }
170
+
171
+ /// Gir deg marginer basert på stegene i spacing-skalaen.
172
+ /// @param $steps Navnet på ett, to eller tre steg i spacing-skalaen, adskilt av "/".
173
+ /// Stegene trer i kraft fra henholdsvis små, mellomstore og store skjermstørrelser i den rekkefølgen du angir dem.
174
+ /// @param {"top" | "right" | "bottom" | "left"} $position Lar deg spesifisere margin for kun én av sidene
175
+ /// @example
176
+ /// .class {
177
+ /// // Gir spacing-40 på små skjermer, og spacing-64 fra mellomstore skjermer
178
+ /// @include jkl.spacing("40/64");
179
+ /// }
180
+ /// @example
181
+ /// .class {
182
+ /// // Gir spacing-40 på små skjermer, spacing-64 på mellomstore skjermer, og spacing-104 fra store skjermer
183
+ /// @include jkl.spacing("40/64/104");
184
+ /// }
185
+ /// @example
186
+ /// .class {
187
+ /// @include jkl.spacing("16", "bottom");
188
+ /// }
189
+ @mixin spacing($steps, $position: null) {
190
+ $steps: _split-string($steps, "/");
191
+
192
+ @if list.length($steps) > 3 {
193
+ @error "Du kan ikke oppgi fler enn tre spacing-steg";
194
+ } @else if list.length($steps) < 1 {
195
+ @error "Du må oppgi minst ett spacing-steg";
196
+ }
197
+
198
+ @include _single-spacing(list.nth($steps, 1), $position);
199
+
200
+ @if list.length($steps) > 1 {
201
+ @include screens.from-medium-device {
202
+ @include _single-spacing(list.nth($steps, 2), $position);
203
+ }
204
+ }
205
+ @if list.length($steps) > 2 {
206
+ @include screens.from-large-device {
207
+ @include _single-spacing(list.nth($steps, 3), $position);
208
+ }
209
+ }
210
+ }
@@ -0,0 +1,144 @@
1
+ @use "sass:string";
2
+ @use "sass:color";
3
+ @use "sass:list";
4
+
5
+ /// Brukes til å sette CSS-variabler for bruk i lyst tema, typisk tekst- og
6
+ /// bakgrunnsfarge. Se også dark-mode-variables.
7
+ /// @content Settes på :root hvis brukeren har lyst tema, og på [data-theme="light"]
8
+ /// @see dark-mode-variables
9
+ /// @see forced-colors-mode
10
+ @mixin light-mode-variables {
11
+ @media screen and (prefers-color-scheme: light) {
12
+ :root {
13
+ @content;
14
+ }
15
+ }
16
+
17
+ [data-theme="light"] {
18
+ @content;
19
+ }
20
+ }
21
+
22
+ /// Brukes til å sette CSS-variabler for bruk i mørkt tema, typisk tekst- og
23
+ /// bakgrunnsfarge. Se også light-mode-variables.
24
+ /// @content Settes på :root hvis brukeren har mørkt tema, og på [data-theme="dark"]
25
+ /// @see light-mode-variables
26
+ /// @see forced-colors-mode
27
+ @mixin dark-mode-variables {
28
+ @media screen and (prefers-color-scheme: dark) {
29
+ :root {
30
+ @content;
31
+ }
32
+ }
33
+
34
+ [data-theme="dark"] {
35
+ @content;
36
+ }
37
+ }
38
+
39
+ /// Brukes til å sette CSS-variabler som skal gjelde i vanlig (ukompakt) modus.
40
+ /// @deprecated Bruk heller jkl.comfortable-density, som skal brukes INNE I komponenten
41
+ /// @content Settes på :root, [data-density="comfortable"], og [data-layout-density="comfortable"]
42
+ @mixin comfortable-density-variables {
43
+ :root,
44
+ [data-layout-density="comfortable"],
45
+ [data-density="comfortable"] {
46
+ @content;
47
+ }
48
+ }
49
+
50
+ /// Brukes til å sette CSS-variabler som skal gjelde i kompakt modus.
51
+ /// @deprecated Bruk heller jkl.compact-density, som skal brukes INNE I komponenten
52
+ /// @content Settes på [data-density="compact"], og på [data-layout-density="compact"]
53
+ @mixin compact-density-variables {
54
+ [data-layout-density="compact"],
55
+ [data-density="compact"] {
56
+ @content;
57
+ }
58
+ }
59
+
60
+ /// Brukes til å sette CSS-variabler inne i en komponent, og som skal gjelde i vanlig (ukompakt) modus.
61
+ /// @content Settes på .jkl &, [data-density="comfortable"] &, og [data-layout-density="comfortable"] &
62
+ @mixin comfortable-density {
63
+ .jkl &,
64
+ &[data-layout-density="comfortable"],
65
+ &[data-density="comfortable"],
66
+ [data-layout-density="comfortable"] &,
67
+ [data-density="comfortable"] & {
68
+ @content;
69
+ }
70
+ }
71
+
72
+ /// Brukes til å sette CSS-variabler inne i en komponent, og som skal gjelde i kompakt modus.
73
+ /// @content Settes på [data-density="compact"] &, og på [data-layout-density="compact"] &
74
+ @mixin compact-density {
75
+ &[data-layout-density="compact"],
76
+ &[data-density="compact"],
77
+ [data-layout-density="compact"] &,
78
+ [data-density="compact"] & {
79
+ @content;
80
+ }
81
+ }
82
+
83
+ /// Brukes til å overstyre stiler for bruk i Forced Colors-modus.
84
+ /// Her vil du typisk legge til fallbacks for manglende box-shadow,
85
+ /// som for eksempel `outline: revert;` og `border: revert;`,
86
+ /// og eventuelle andre problemer som oppstår for brukere av høykontrasttemaer.
87
+ /// Se https://developer.mozilla.org/en-US/docs/Web/CSS/@media/forced-colors
88
+ /// og https://www.smashingmagazine.com/2022/03/windows-high-contrast-colors-mode-css-custom-properties/
89
+ /// @content Innholdet plasseres i et media query som matcher hvis høykontrasttema er i bruk
90
+ /// @see forced-colors-svg-fallback
91
+ /// @see light-mode-variables
92
+ /// @see dark-mode-variables
93
+ @mixin forced-colors-mode {
94
+ @media screen and (forced-colors: active) {
95
+ @content;
96
+ }
97
+ }
98
+
99
+ $_valid-forced-colors-text-values: (
100
+ "Canvas",
101
+ "CanvasText",
102
+ "LinkText",
103
+ "GrayText",
104
+ "Highlight",
105
+ "HighlightText",
106
+ "ButtonFace",
107
+ "ButtonText"
108
+ );
109
+
110
+ /// Hjelper for å sette riktig farge på SVGer i Chrome for brukere med Forced Color-modus.
111
+ /// Se https://melanie-richards.com/blog/currentcolor-svg-hcm/ for detaljer
112
+ /// @param {"Canvas" | "CanvasText" | "LinkText" | "GrayText" | "Highlight" | "HighlightText" | "ButtonFace" | "ButtonText"} $stroke - Definer hvilken systemfarge som skal brukes til stroke. Fargene har en forventet betydning for brukeren. Følg den semantiske betydningen til fargen, ikke velg fargen du selv synes "ser best ut".
113
+ /// @param {"Canvas" | "CanvasText" | "LinkText" | "GrayText" | "Highlight" | "HighlightText" | "ButtonFace" | "ButtonText"} $fill [null] - Som $stroke, bare for fill. Valgfri.
114
+ /// @output Setter angitte verdier på nåværende selector og dens svg og path children, inni et media query som treffer dersom forced-colors er aktiv.
115
+ @mixin forced-colors-svg-fallback($stroke, $fill: null) {
116
+ @if not list.index($_valid-forced-colors-text-values, $stroke) {
117
+ @error "#{$stroke} will not be used for stroke in Forced Color mode. Valid options are: #{$_valid-forced-colors-text-values}. Use the correct color for your given context.";
118
+ }
119
+
120
+ @if $fill and not list.index($_valid-forced-colors-text-values, $fill) {
121
+ @error "#{$fill} will not be used for fill in Forced Color mode. Valid options are: null, #{$_valid-forced-colors-text-values}. Use the correct color for your given context.";
122
+ }
123
+
124
+ @media screen and (forced-colors: active) {
125
+ stroke: $stroke;
126
+ fill: $fill;
127
+
128
+ & svg,
129
+ & path {
130
+ stroke: $stroke;
131
+ fill: $fill;
132
+ }
133
+ }
134
+ }
135
+
136
+ /// Jøkul har en automatisk overstyring av animasjoner og transitions i denne modusen,
137
+ /// men om du trenger å gjøre noe ekstra for brukere som ønsker redusert bevegelse
138
+ /// kan du bruke denne mixinen for å plassere CSS inni riktig media query.
139
+ /// @content Innholdet plasseres i et media query som matcher hvis brukeren foretrekker redusert bevegelse
140
+ @mixin prefers-reduced-motion {
141
+ @media screen and (prefers-reduced-motion: reduce) {
142
+ @content;
143
+ }
144
+ }