@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 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{useRef as e,useCallback as n}from"react";function r(e){return{x:e.clientX,y:e.clientY}}function t(t){const o=e(!1),u=e(),{onClick:l,onChange:c,onPointerCancel:i,onPointerDown:a,onPointerMove:p,onPointerUp:s}=t,f=n((e=>{o.current||null==l||l(e),o.current=!1}),[l]),P=n((e=>{var n,t;e.preventDefault(),null==(t=(n=e.target).setPointerCapture)||t.call(n,e.pointerId),u.current=r(e),o.current=!1,null==a||a(e)}),[a]),v=n((e=>{if(e.preventDefault(),!u.current)return;const{x:n}=r(e),{x:t}=u.current;n-t>10&&c&&"on"!==o.current?(c(e,!0),o.current="on",u.current=r(e)):t-n>10&&c&&"off"!==o.current&&(c(e,!1),o.current="off",u.current=r(e)),null==p||p(e)}),[p,c]),C=n((e=>{var n,r;e.preventDefault(),null==(r=(n=e.target).releasePointerCapture)||r.call(n,e.pointerId),u.current=void 0,"pointerup"===e.type?null==s||s(e):null==i||i(e)}),[s,i]);return{swipeHandled:o,gestureHandlers:{onClick:f,onPointerDown:P,onPointerMove:v,onPointerUp:C,onPointerCancel:C}}}export{t as useSwipeGesture};
2
+ //# sourceMappingURL=useSwipeGesture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSwipeGesture.js","sources":["../../../../src/hooks/useSwipeGesture/useSwipeGesture.ts"],"sourcesContent":["import { type MouseEventHandler, type PointerEventHandler, type MutableRefObject, useCallback, useRef } from \"react\";\n\nexport type SwipeChangeHandler<T extends HTMLElement> = (\n event: React.MouseEvent<T> | React.PointerEvent<T>,\n pressed: boolean,\n) => void;\n\ntype Point = { x: number; y: number };\n\nfunction getGesturePointFromEvent<T extends HTMLElement>(event: React.PointerEvent<T>): Point {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n}\n\ntype SwipeGestureOptions<T extends HTMLElement> = {\n onClick?: MouseEventHandler<T>;\n onChange?: SwipeChangeHandler<T>;\n onPointerDown?: PointerEventHandler<T>;\n onPointerUp?: PointerEventHandler<T>;\n onPointerMove?: PointerEventHandler<T>;\n onPointerCancel?: PointerEventHandler<T>;\n};\n\n/**\n * Logikk for å håndtere en swipe, for eksempel brukt i toggle switch.\n *\n * @param options Callbacks for de ulike stegene i en swipe-gesture\n * @returns Handlers for de ulike stegene i en swipe-gesture\n */\nexport function useSwipeGesture<T extends HTMLElement>(\n options: SwipeGestureOptions<T>,\n): {\n swipeHandled: MutableRefObject<\"on\" | \"off\" | false>;\n gestureHandlers: {\n onClick: MouseEventHandler<T>;\n onPointerDown: PointerEventHandler<T>;\n onPointerMove: PointerEventHandler<T>;\n onPointerUp: PointerEventHandler<T>;\n onPointerCancel: PointerEventHandler<T>;\n };\n} {\n const swipeHandled = useRef<\"on\" | \"off\" | false>(false);\n const gestureStartPosition = useRef<Point>();\n\n const { onClick, onChange, onPointerCancel, onPointerDown, onPointerMove, onPointerUp } = options;\n\n const handleClick: MouseEventHandler<T> = useCallback(\n (event) => {\n if (!swipeHandled.current) {\n onClick?.(event);\n }\n swipeHandled.current = false; // sørg for at vi får klikke igjen etter swipes\n },\n [onClick],\n );\n\n const handleGestureStart: PointerEventHandler<T> = useCallback(\n (event) => {\n event.preventDefault();\n\n (event.target as T).setPointerCapture?.(event.pointerId);\n gestureStartPosition.current = getGesturePointFromEvent(event);\n swipeHandled.current = false;\n\n onPointerDown?.(event);\n },\n [onPointerDown],\n );\n\n const handleGestureMove: PointerEventHandler<T> = useCallback(\n (event) => {\n event.preventDefault();\n\n if (!gestureStartPosition.current) {\n return;\n }\n\n const { x: currentX } = getGesturePointFromEvent(event);\n const { x: startX } = gestureStartPosition.current;\n\n if (currentX - startX > 10 && onChange && swipeHandled.current !== \"on\") {\n onChange(event, true);\n swipeHandled.current = \"on\";\n gestureStartPosition.current = getGesturePointFromEvent(event);\n } else if (startX - currentX > 10 && onChange && swipeHandled.current !== \"off\") {\n onChange(event, false);\n swipeHandled.current = \"off\";\n gestureStartPosition.current = getGesturePointFromEvent(event);\n }\n\n onPointerMove?.(event);\n },\n [onPointerMove, onChange],\n );\n\n const handleGestureEnd: PointerEventHandler<T> = useCallback(\n (event) => {\n event.preventDefault();\n\n (event.target as T).releasePointerCapture?.(event.pointerId);\n gestureStartPosition.current = undefined;\n\n event.type === \"pointerup\" ? onPointerUp?.(event) : onPointerCancel?.(event);\n },\n [onPointerUp, onPointerCancel],\n );\n\n return {\n swipeHandled,\n gestureHandlers: {\n onClick: handleClick,\n onPointerDown: handleGestureStart,\n onPointerMove: handleGestureMove,\n onPointerUp: handleGestureEnd,\n onPointerCancel: handleGestureEnd,\n },\n };\n}\n"],"names":["getGesturePointFromEvent","event","x","clientX","y","clientY","useSwipeGesture","options","swipeHandled","useRef","gestureStartPosition","onClick","onChange","onPointerCancel","onPointerDown","onPointerMove","onPointerUp","handleClick","useCallback","current","handleGestureStart","preventDefault","_b","_a","target","setPointerCapture","call","pointerId","handleGestureMove","currentX","startX","handleGestureEnd","releasePointerCapture","type","gestureHandlers"],"mappings":"gDASA,SAASA,EAAgDC,GAC9C,MAAA,CACHC,EAAGD,EAAME,QACTC,EAAGH,EAAMI,QAEjB,CAiBO,SAASC,EACZC,GAWMC,MAAAA,EAAeC,GAA6B,GAC5CC,EAAuBD,KAErBE,QAAAA,EAASC,SAAAA,EAAUC,gBAAAA,EAAiBC,cAAAA,EAAeC,cAAAA,EAAeC,YAAAA,GAAgBT,EAEpFU,EAAoCC,GACrCjB,IACQO,EAAaW,SACd,MAAAR,GAAAA,EAAUV,GAEdO,EAAaW,SAAU,CAAA,GAE3B,CAACR,IAGCS,EAA6CF,GAC9CjB,YACGA,EAAMoB,iBAEL,OAAAC,GAAAC,EAAAtB,EAAMuB,QAAaC,oBAAnBH,EAAAI,KAAAH,EAAuCtB,EAAM0B,WACzBjB,EAAAS,QAAUnB,EAAyBC,GACxDO,EAAaW,SAAU,EAEvB,MAAAL,GAAAA,EAAgBb,EAAAA,GAEpB,CAACa,IAGCc,EAA4CV,GAC7CjB,IAGO,GAFJA,EAAMoB,kBAEDX,EAAqBS,QACtB,OAGE,MAAEjB,EAAG2B,GAAa7B,EAAyBC,IACzCC,EAAG4B,GAAWpB,EAAqBS,QAEvCU,EAAWC,EAAS,IAAMlB,GAAqC,OAAzBJ,EAAaW,SACnDP,EAASX,GAAO,GAChBO,EAAaW,QAAU,KACFT,EAAAS,QAAUnB,EAAyBC,IACjD6B,EAASD,EAAW,IAAMjB,GAAqC,QAAzBJ,EAAaW,UAC1DP,EAASX,GAAO,GAChBO,EAAaW,QAAU,MACFT,EAAAS,QAAUnB,EAAyBC,IAG5D,MAAAc,GAAAA,EAAgBd,EAAAA,GAEpB,CAACc,EAAeH,IAGdmB,EAA2Cb,GAC5CjB,YACGA,EAAMoB,iBAEL,OAAAC,GAAAC,EAAAtB,EAAMuB,QAAaQ,wBAAnBV,EAAAI,KAAAH,EAA2CtB,EAAM0B,WAClDjB,EAAqBS,aAAU,EAEhB,cAAflB,EAAMgC,KAAuB,MAAAjB,GAAAA,EAAcf,GAAS,MAAAY,GAAAA,EAAkBZ,EAAAA,GAE1E,CAACe,EAAaH,IAGX,MAAA,CACHL,aAAAA,EACA0B,gBAAiB,CACbvB,QAASM,EACTH,cAAeM,EACfL,cAAea,EACfZ,YAAae,EACblB,gBAAiBkB,GAG7B"}
@@ -0,0 +1,18 @@
1
+ export { useAnimatedDetails } from './useAnimatedDetails';
2
+ export { useAnimatedHeight, useAnimatedHeightBetween, useAutoAnimatedHeight, type UseAutoAnimatedHeightOptions, type UseAnimatedHeightOptions, } from './useAnimatedHeight';
3
+ export { useBrowserPreferences } from './/useBrowserPreferences';
4
+ export { useIntersectionObserver } from './useIntersectionObserver';
5
+ export { useLocalStorage } from './useLocalStorage/useLocalStorage';
6
+ export { useMutationObserver } from './useMutationObserver';
7
+ export { usePreviousValue } from './usePreviousValue';
8
+ export { useProgressiveImg, type ProgressiveImageProps } from './useProgressiveImg';
9
+ export { useScreen, type ScreenState } from './useScreen';
10
+ export { useScrollIntoView, type ScrollIntoViewProps } from './useScrollIntoView';
11
+ export { useAriaLiveRegion, type UseAriaLiveRegionOptions } from './useAriaLiveRegion';
12
+ export { useClickOutside } from './useClickOutside';
13
+ export { useFocusOutside } from './useFocusOutside';
14
+ export { useElementDimensions, type Dimensions } from './useElementDimensions';
15
+ export { useId } from './useId';
16
+ export { useKeyListener } from './useKeyListener';
17
+ export { useListNavigation } from './useListNavigation';
18
+ export { useSwipeGesture, type SwipeChangeHandler } from './useSwipeGesture';
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Sjekker om et CSS Media Query matcher nettleserens egenskaper
3
+ *
4
+ * @param mediaQuery CSS Media Query som skal sjekkes. F.eks. `(orientation: portrait)`
5
+ * @returns om det er match på queryen
6
+ */
7
+ export declare function getInitialMediaQueryMatch(mediaQuery: string): boolean;
8
+ /**
9
+ * Lytt på endringer i match mot et CSS Media Query
10
+ *
11
+ * @param queryList en MediaQueryList initiert med `window.matchMedia(<CSS Media Query>)`
12
+ * @param callback funksjon som kalles når match for `queryList` endres
13
+ */
14
+ export declare function addMediaQueryListener(queryList: MediaQueryList, callback: (e: MediaQueryListEvent) => void): void;
15
+ /**
16
+ * Fjern en lytter fra en MediaQueryList
17
+ *
18
+ * @param queryList en MediaQueryList initiert med `window.matchMedia(<CSS Media Query>)`
19
+ * @param callback lytter som skal fjernes
20
+ */
21
+ export declare function removeMediaQueryListener(queryList: MediaQueryList, callback: (e: MediaQueryListEvent) => void): void;
@@ -0,0 +1 @@
1
+ export { useAnimatedDetails } from './useAnimatedDetails';
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Lar deg animere et HTML details element med en summary trigger og noe innhold.
3
+ * HTML strukturen din bør se ut som omtrent
4
+ * <details ref={detailsRef}>
5
+ * <summary ref={summaryRef} onClick={onSummaryClick}>Trigger for å åpne</summary>
6
+ * <div ref={contentRef}>Ekspanderbart innhold</div>
7
+ * </details>
8
+ *
9
+ * @param onOpenChange Callback med informasjon om når elementet åpner/lukker seg.
10
+ * @param isExpanded Styr åpning/lukking utenfra.
11
+ */
12
+ export declare const useAnimatedDetails: ({ onOpenChange, isExpanded, }: {
13
+ onOpenChange: (open: boolean, e: React.MouseEvent<HTMLElement>) => void;
14
+ isExpanded: boolean;
15
+ }) => {
16
+ detailsRef: React.RefObject<HTMLDetailsElement>;
17
+ summaryRef: React.RefObject<HTMLButtonElement>;
18
+ contentRef: React.RefObject<HTMLDivElement>;
19
+ onSummaryClick: React.MouseEventHandler<HTMLElement>;
20
+ };
@@ -0,0 +1,4 @@
1
+ export type { UseAnimatedHeightOptions } from './types';
2
+ export { useAnimatedHeight } from './useAnimatedHeight';
3
+ export { useAnimatedHeightBetween } from './useAnimatedHeightBetween';
4
+ export { useAutoAnimatedHeight, type UseAutoAnimatedHeightOptions } from './useAutoAnimateHeight';
@@ -0,0 +1,26 @@
1
+ import { RefObject } from 'react';
2
+ import { Easing, Timing } from '../../core';
3
+ export interface UseAnimatedHeightOptions<T extends HTMLElement = HTMLElement> {
4
+ display?: "block" | "grid" | "flex";
5
+ /**
6
+ * Overstyr standard easingfunksjon
7
+ * @default "standard"
8
+ */
9
+ easing?: Easing;
10
+ /**
11
+ * Overstyr standard timing
12
+ * @default "productive"
13
+ */
14
+ timing?: Timing;
15
+ onTransitionStart?: (isOpening: boolean, ref: RefObject<T>) => void;
16
+ /**
17
+ * Kalles rett etter at elementet har fått display: block; i stedet for hidden;
18
+ * Nyttig om du må flytte fokus inn i elementet og ikke vil vente til animasjonen er ferdig.
19
+ * Her er ikke innholdet _visuelt_ synlig ennå, men det er "synlig" for DOM i den
20
+ * forstand at det _ikke_ er display: hidden;
21
+ *
22
+ * `isOpen` er alltid `true`. Det sendes som første parameter for å ha lik funksjonssignatur som `onTransitionEnd`.
23
+ */
24
+ onFirstVisible?: (isOpen: boolean, ref: RefObject<T>) => void;
25
+ onTransitionEnd?: (isOpen: boolean, ref: RefObject<T>) => void;
26
+ }
@@ -0,0 +1,10 @@
1
+ import { RefObject } from 'react';
2
+ import { UseAnimatedHeightOptions } from './types';
3
+ /**
4
+ * Lar deg animere et element opp til sin maksimale høyde, eller ned til 0.
5
+ *
6
+ * @param isOpen Om elementet er åpent eller lukket.
7
+ * @param options Konfigurer display-property, easing og timing, og eventuelle callbacks for life cycle til animasjonen.
8
+ * @returns Ref til elementet som skal animeres, og en funksjon for å trigge animasjonen manuelt.
9
+ */
10
+ export declare function useAnimatedHeight<T extends HTMLElement>(isOpen: boolean, options?: UseAnimatedHeightOptions<T>): [RefObject<T>, () => void];
@@ -0,0 +1,10 @@
1
+ import { RefObject } from 'react';
2
+ import { UseAnimatedHeightOptions } from './types';
3
+ /**
4
+ * Lar deg enklere animere mellom to tilstander, gitt ved å sette `data-expanded` på et element til `true` eller `false`.
5
+ * Du bestemmer selv hvilke stiler elementet skal ha i de to tilstandene (vha CSS/Sass), og høyden animeres dersom den endrer seg.
6
+ * @param isExpanded indikerer om elementet skal være utvidet eller ikke
7
+ * @param options konfigurasjon for animasjonen, og lyttere for når animasjonen starter og slutter
8
+ * @returns En tuple med referanse til elementet og en funksjon som kan trigge animasjonen
9
+ */
10
+ export declare function useAnimatedHeightBetween<T extends HTMLElement>(isExpanded: boolean, options?: Omit<UseAnimatedHeightOptions<T>, "display" | "onFirstVisible">): [RefObject<T>, () => void];
@@ -0,0 +1,20 @@
1
+ import { RefObject } from 'react';
2
+ import { Easing, Timing } from '../../core';
3
+ export type UseAutoAnimatedHeightOptions<T extends HTMLElement> = {
4
+ easing?: Easing;
5
+ /**
6
+ * Overstyr standard timing
7
+ * @default "expressive"
8
+ */
9
+ timing?: Timing;
10
+ onTransitionStart?: (ref: RefObject<T>) => void;
11
+ onTransitionEnd?: (ref: RefObject<T>) => void;
12
+ };
13
+ /**
14
+ * Gjør det enklere å animere høyden på et element når innholdet endrer seg, men kan brukes på mer generelt grunnlag.
15
+ * Hooken tar inn en triggerverdi, og når denne endrer seg animeres høyden på elementet dersom den har endret seg.
16
+ * @param trigger verdien som brukes til å trigge animasjonen. Dersom denne endrer seg animeres høyden på elementet.
17
+ * @param options konfigurasjon for animasjonen, og lyttere for når animasjonen starter og slutter
18
+ * @returns en referanse til elementet som skal animeres
19
+ */
20
+ export declare function useAutoAnimatedHeight<T extends HTMLElement = HTMLElement>(trigger: any, options?: UseAutoAnimatedHeightOptions<T>): RefObject<T>;
@@ -0,0 +1 @@
1
+ export { useAriaLiveRegion, type UseAriaLiveRegionOptions } from './useAriaLiveRegion';
@@ -0,0 +1,15 @@
1
+ export interface UseAriaLiveRegionOptions {
2
+ /**
3
+ * @default "polite"
4
+ */
5
+ politeness?: "polite" | "assertive" | "off";
6
+ }
7
+ /**
8
+ * Hjelper for å bare sette aria-live dersom det har skjedd en endring. Unngår at innholdet annonseres ved sidelasting.
9
+ * @param watch Verdi som indikerer at det har skjedd en endring. For eksempel en boolean som styrer en loader, eller selve teksten som skal bli lest opp.
10
+ * @param options Bestem om aria-live skal være polite, assertive eller off.
11
+ * @returns
12
+ */
13
+ export declare function useAriaLiveRegion(watch: unknown | unknown[], options?: UseAriaLiveRegionOptions): {
14
+ "aria-live": "off" | "polite" | "assertive" | undefined;
15
+ };
@@ -0,0 +1 @@
1
+ export { useBrowserPreferences } from './useBrowserPreferences';
@@ -0,0 +1,12 @@
1
+ import { ColorScheme } from '../../core';
2
+ type BrowserPreferences = {
3
+ prefersReducedMotion: boolean;
4
+ prefersColorScheme: ColorScheme;
5
+ forcedColors: boolean;
6
+ };
7
+ /**
8
+ * Hook som gir informasjon om brukerens foretrukne konfigurasjon.
9
+ * @returns Objekt med informasjon om brukerens foretrukne tema (lyst vs mørkt), redusert bevegelse, og høykontrast (forced colors).
10
+ */
11
+ export declare const useBrowserPreferences: () => BrowserPreferences;
12
+ export {};
@@ -0,0 +1 @@
1
+ export { useClickOutside } from './useClickOutside';
@@ -0,0 +1,7 @@
1
+ import { RefObject } from 'react';
2
+ /**
3
+ * Hook for å sette opp en lytter ved klikk utenfor et element.
4
+ * @param ref Elementet du ønsker å sjekke om en klikk er utenfor.
5
+ * @param fn Callback-funksjon som kalles når det klikkes utenfor elementet.
6
+ */
7
+ export declare function useClickOutside(ref: RefObject<HTMLElement> | null, fn: () => void): void;
@@ -0,0 +1 @@
1
+ export { useElementDimensions, type Dimensions } from './useElementDimensions';
@@ -0,0 +1,11 @@
1
+ import { RefObject } from 'react';
2
+ export type Dimensions = {
3
+ height: number;
4
+ width: number;
5
+ };
6
+ /**
7
+ * Lar deg måle størrelsen på et element, og oppdatere målene når vinduet endrer størrelse.
8
+ * @param throttleDelay Antall milisekunder som skal gå mellom hver gang dimensjonene oppdateres.
9
+ * @returns Ref til elementet som skal måles, og dimensjonene til elementet.
10
+ */
11
+ export declare function useElementDimensions<T extends HTMLElement>(throttleDelay?: number): [RefObject<T>, Dimensions];
@@ -0,0 +1 @@
1
+ export { useFocusOutside } from './useFocusOutside';
@@ -0,0 +1,7 @@
1
+ import { RefObject } from 'react';
2
+ /**
3
+ * Hook for å lytte etter fokus utenfor et element. Nyttig dersom flere fokuserbare elementer samspiller i en komponent.
4
+ * @param ref Elementet som skal observeres
5
+ * @param fn Funksjon som kalles når fokus flyttes utenfor elementet
6
+ */
7
+ export declare function useFocusOutside(ref: RefObject<HTMLElement> | null, fn: () => void): void;
@@ -0,0 +1 @@
1
+ export { useId } from './useId';
@@ -0,0 +1,11 @@
1
+ export interface UseIdOptions {
2
+ /** @default true */
3
+ generateSuffix?: boolean;
4
+ }
5
+ /**
6
+ * Hook som genererer en unik ID.
7
+ * @param id En valgfri eksisterende ID som kan brukes som prefix.
8
+ * @param options Objekt med innstillinger, dersom du angir et prefix.
9
+ * @deprecated Bruk useId fra "react" pakka i stedet
10
+ */
11
+ export declare const useId: (id?: string, options?: UseIdOptions) => string;
@@ -0,0 +1 @@
1
+ export { useIntersectionObserver } from './useIntersectionObserver';
@@ -0,0 +1,13 @@
1
+ import { RefObject, MutableRefObject } from 'react';
2
+ type ValidElement = HTMLElement | SVGElement;
3
+ type Target = MutableRefObject<ValidElement> | RefObject<ValidElement> | MutableRefObject<NodeListOf<ValidElement>> | RefObject<NodeListOf<ValidElement>> | NodeListOf<ValidElement>;
4
+ /**
5
+ * Hook som gjør det enkelt å observere om et element er synlig i viewporten.
6
+ *
7
+ * @param target Elementet eller elementene som skal observeres. Du kan sende in en React ref til et HTMLElement eller SVG Element, eller en NodeList av samme type elementer (returneres f.eks. av document.querySelectorAll), eller en React ref med en NodeList av samme type elementer.
8
+ * @param onIntersect Callback-funksjon som utføres når et av elementene som observeres overlapper angitt mål. Se https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#parameters for mer info.
9
+ * @param fallback Funksjon som kalles dersom nettleseren ikke støtter IntersectionOpserver-APIet.
10
+ * @param options Objekt med innstillinger for oberveren. Se https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#parameters for mer info.
11
+ */
12
+ export declare const useIntersectionObserver: (target: Target, onIntersect: IntersectionObserverCallback, fallback?: VoidFunction | null, options?: Partial<IntersectionObserverInit>) => void;
13
+ export {};
@@ -0,0 +1 @@
1
+ export { useKeyListener } from './useKeyListener';
@@ -0,0 +1,8 @@
1
+ import { RefObject } from 'react';
2
+ /**
3
+ * Lar deg sette opp en tastaturlytter på et element.
4
+ * @param ref Element som skal observeres
5
+ * @param keys Taster som skal lyttes på
6
+ * @param fn Funksjon som kalles når en tastetrykk observeres
7
+ */
8
+ export declare function useKeyListener(ref: RefObject<HTMLElement> | null, keys: string[] | string | null, fn: (event: KeyboardEvent) => void): void;
@@ -0,0 +1 @@
1
+ export { useListNavigation } from './useListNavigation';
@@ -0,0 +1,7 @@
1
+ import { RefObject } from 'react';
2
+ type UseListNavigationProps<T> = {
3
+ /** Ref til et element med rollen `listbox` */
4
+ ref: RefObject<T>;
5
+ };
6
+ export declare function useListNavigation<T extends HTMLElement>({ ref }: UseListNavigationProps<T>): void;
7
+ export {};
@@ -0,0 +1 @@
1
+ export { useLocalStorage } from './useLocalStorage';
@@ -0,0 +1 @@
1
+ export declare const useLocalStorage: <T>(key: string, defaultValue: T) => [T, (newValue: T) => void];
@@ -0,0 +1 @@
1
+ export { useMutationObserver } from './useMutationObserver';
@@ -0,0 +1,9 @@
1
+ import { RefObject } from 'react';
2
+ /**
3
+ * Hook som gjør det enklere å sjekke en komponents children for endringer.
4
+ *
5
+ * @param targetRef Container som skal observeres. Containeren må ikke rerendres, da vil observereren bli opprettet på nytt.
6
+ * @param onObservation Callback-funksjon som utføres når en mutasjon observeres.
7
+ * @param config Parametere til observereren. Se https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit#properties for mer info.
8
+ */
9
+ export declare const useMutationObserver: (targetRef: RefObject<HTMLElement>, onObservation: MutationCallback, config?: Partial<MutationObserverInit>) => void;
@@ -0,0 +1 @@
1
+ export { usePreviousValue } from './usePreviousValue';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Lar deg huske en verdi fra forrige render.
3
+ * @param value Verdien som skal huskes.
4
+ * @returns Forrige render av verdien, eller undefined første render.
5
+ */
6
+ export declare const usePreviousValue: <T>(value: T) => T | undefined;
@@ -0,0 +1 @@
1
+ export { useProgressiveImg, type ProgressiveImageProps } from './useProgressiveImg';
@@ -0,0 +1,10 @@
1
+ export interface ProgressiveImageProps {
2
+ lowQualitySrc: string;
3
+ highQualitySrc: string;
4
+ }
5
+ type ProgressiveImage = {
6
+ src: string;
7
+ isBlurred: boolean;
8
+ };
9
+ export declare const useProgressiveImg: ({ lowQualitySrc, highQualitySrc }: ProgressiveImageProps) => ProgressiveImage;
10
+ export {};
@@ -0,0 +1,2 @@
1
+ export { useScreen } from './useScreen';
2
+ export { type ScreenState } from './state';
@@ -0,0 +1,17 @@
1
+ export interface ScreenState {
2
+ isSmallDevice: boolean;
3
+ isMediumDevice: boolean;
4
+ isLargeDevice: boolean;
5
+ isXlDevice: boolean;
6
+ isLandscape: boolean;
7
+ isPortrait: boolean;
8
+ }
9
+ export declare enum ActionType {
10
+ orientation = "ORIENTATION_CHANGED",
11
+ deviceSize = "DEVICE_SIZE_CHANGED"
12
+ }
13
+ export interface ScreenAction {
14
+ type: ActionType;
15
+ property: keyof ScreenState;
16
+ }
17
+ export declare const reducer: (state: ScreenState, action: ScreenAction) => ScreenState;
@@ -0,0 +1,6 @@
1
+ import { ScreenState } from './state';
2
+ /**
3
+ * Finn størrelsen og orienteringen til skjermen.
4
+ * @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.
5
+ */
6
+ export declare const useScreen: () => ScreenState;
@@ -0,0 +1 @@
1
+ export { useScrollIntoView, type ScrollIntoViewProps } from './useScrollIntoView';
@@ -0,0 +1,11 @@
1
+ import { RefObject } from 'react';
2
+ type ValueOf<T> = T[keyof T];
3
+ export interface ScrollIntoViewProps {
4
+ ref: RefObject<ValueOf<HTMLElementTagNameMap>>;
5
+ timeout?: number;
6
+ autoScroll?: boolean;
7
+ options?: ScrollIntoViewOptions;
8
+ }
9
+ type ScrollFunction = () => void;
10
+ export declare const useScrollIntoView: ({ ref, timeout, autoScroll, options, }: ScrollIntoViewProps) => [ScrollFunction];
11
+ export {};
@@ -0,0 +1 @@
1
+ export { useSwipeGesture, type SwipeChangeHandler } from './useSwipeGesture';
@@ -0,0 +1,27 @@
1
+ import { MouseEventHandler, PointerEventHandler, MutableRefObject } from 'react';
2
+ export type SwipeChangeHandler<T extends HTMLElement> = (event: React.MouseEvent<T> | React.PointerEvent<T>, pressed: boolean) => void;
3
+ type SwipeGestureOptions<T extends HTMLElement> = {
4
+ onClick?: MouseEventHandler<T>;
5
+ onChange?: SwipeChangeHandler<T>;
6
+ onPointerDown?: PointerEventHandler<T>;
7
+ onPointerUp?: PointerEventHandler<T>;
8
+ onPointerMove?: PointerEventHandler<T>;
9
+ onPointerCancel?: PointerEventHandler<T>;
10
+ };
11
+ /**
12
+ * Logikk for å håndtere en swipe, for eksempel brukt i toggle switch.
13
+ *
14
+ * @param options Callbacks for de ulike stegene i en swipe-gesture
15
+ * @returns Handlers for de ulike stegene i en swipe-gesture
16
+ */
17
+ export declare function useSwipeGesture<T extends HTMLElement>(options: SwipeGestureOptions<T>): {
18
+ swipeHandled: MutableRefObject<"on" | "off" | false>;
19
+ gestureHandlers: {
20
+ onClick: MouseEventHandler<T>;
21
+ onPointerDown: PointerEventHandler<T>;
22
+ onPointerMove: PointerEventHandler<T>;
23
+ onPointerUp: PointerEventHandler<T>;
24
+ onPointerCancel: PointerEventHandler<T>;
25
+ };
26
+ };
27
+ export {};
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "@fremtind/jokul",
3
+ "version": "0.1.1",
4
+ "type": "module",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "description": "Jøkul monopakke",
9
+ "homepage": "https://github.com/fremtind/jokul/tree/main/packages/jokul",
10
+ "keywords": [],
11
+ "license": "MIT",
12
+ "sideEffects": [
13
+ "*.css",
14
+ "*.scss"
15
+ ],
16
+ "files": [
17
+ "./build",
18
+ "./src/core/styles",
19
+ "./src/core/jkl",
20
+ "./src/core/tokens.less",
21
+ "./src/components/navigation/styles"
22
+ ],
23
+ "exports": {
24
+ "./core": {
25
+ "require": "./build/cjs/core/index.js",
26
+ "import": "./build/es/core/index.js",
27
+ "types": "./build/core/index.d.ts"
28
+ },
29
+ "./core/tokens.less": "./src/core/tokens.less",
30
+ "./core/styles/*": "./src/core/styles/*",
31
+ "./core/jkl": "./src/core/jkl/_index.scss",
32
+ "./hooks": {
33
+ "require": "./build/cjs/hooks/index.js",
34
+ "import": "./build/es/hooks/index.js",
35
+ "types": "./build/hooks/index.d.ts"
36
+ },
37
+ "./components": {
38
+ "require": "./build/cjs/components/index.js",
39
+ "import": "./build/es/components/index.js",
40
+ "types": "./build/components/index.d.ts"
41
+ },
42
+ "./components/navigation": {
43
+ "require": "./build/cjs/components/navigation/index.js",
44
+ "import": "./build/es/components/navigation/index.js",
45
+ "types": "./build/components/navigation/index.d.ts"
46
+ },
47
+ "./components/navigation/styles/*": "./src/components/navigation/styles/*"
48
+ },
49
+ "scripts": {
50
+ "generate:tokens": "node tokens.build.mjs",
51
+ "build": "pnpm run /compile:*/",
52
+ "compile:style": "node build-styles.mjs",
53
+ "compile:scripts": "vite build --config vite.build.config.mjs"
54
+ },
55
+ "peerDependencies": {
56
+ "react": "^18.0.0"
57
+ },
58
+ "devDependencies": {
59
+ "@rollup/plugin-terser": "^0.4.4",
60
+ "@vitejs/plugin-react-swc": "^3.7.0",
61
+ "autoprefixer": "^10.4.14",
62
+ "change-case": "^4.1.2",
63
+ "clsx": "^2.1.1",
64
+ "cssnano": "^6.0.1",
65
+ "cssnano-preset-lite": "^3.0.0",
66
+ "glob": "^11.0.0",
67
+ "postcss": "^8.4.24",
68
+ "rollup-plugin-node-externals": "^7.1.3",
69
+ "rollup-plugin-visualizer": "^5.12.0",
70
+ "sass-embedded": "^1.78.0",
71
+ "style-dictionary": "^3.8.0",
72
+ "vite": "^5.2.0",
73
+ "vite-plugin-dts": "^4.1.0"
74
+ },
75
+ "repository": {
76
+ "type": "git",
77
+ "url": "git+https://github.com/fremtind/jokul.git"
78
+ },
79
+ "bugs": {
80
+ "url": "https://github.com/fremtind/jokul/issues"
81
+ },
82
+ "gitHead": "0e6a5f3d5d3ee91d6e899931558bd16d8af190ae"
83
+ }