@fremtind/jokul 3.6.0 → 3.7.0

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 (271) hide show
  1. package/README.md +15 -2
  2. package/build/build-stats.html +1 -1
  3. package/build/cjs/components/menu/Menu.cjs +1 -1
  4. package/build/cjs/components/menu/Menu.cjs.map +1 -1
  5. package/build/cjs/components/text-input/BaseTextInput.cjs +1 -1
  6. package/build/cjs/components/text-input/BaseTextInput.cjs.map +1 -1
  7. package/build/cjs/core/tokens/style-dictionary/build.cjs +1 -1
  8. package/build/cjs/core/tokens/style-dictionary/build.cjs.map +1 -1
  9. package/build/cjs/core/tokens.cjs +1 -1
  10. package/build/cjs/core/tokens.cjs.map +1 -1
  11. package/build/cjs/core/tokens.d.cts +114 -0
  12. package/build/cjs/tailwind/plugins/jokulTypographyPlugin.cjs +1 -1
  13. package/build/cjs/tailwind/plugins/jokulTypographyPlugin.cjs.map +1 -1
  14. package/build/es/components/menu/Menu.js +1 -1
  15. package/build/es/components/menu/Menu.js.map +1 -1
  16. package/build/es/components/text-input/BaseTextInput.js +1 -1
  17. package/build/es/components/text-input/BaseTextInput.js.map +1 -1
  18. package/build/es/core/tokens/style-dictionary/build.js +1 -1
  19. package/build/es/core/tokens/style-dictionary/build.js.map +1 -1
  20. package/build/es/core/tokens.d.ts +114 -0
  21. package/build/es/core/tokens.js +1 -1
  22. package/build/es/core/tokens.js.map +1 -1
  23. package/build/es/tailwind/plugins/jokulTypographyPlugin.js +1 -1
  24. package/build/es/tailwind/plugins/jokulTypographyPlugin.js.map +1 -1
  25. package/package.json +4 -2
  26. package/styles/components/autosuggest/_index.scss +2 -0
  27. package/styles/components/autosuggest/autosuggest.scss +87 -0
  28. package/styles/components/breadcrumb/_index.scss +2 -0
  29. package/styles/components/breadcrumb/breadcrumb.scss +38 -0
  30. package/styles/components/button/_index.scss +2 -0
  31. package/styles/components/button/button.scss +169 -0
  32. package/styles/components/card/_index.scss +3 -0
  33. package/styles/components/card/card.scss +105 -0
  34. package/styles/components/checkbox/_index.scss +1 -0
  35. package/styles/components/checkbox/checkbox.css +4 -4
  36. package/styles/components/checkbox/checkbox.min.css +1 -1
  37. package/styles/components/checkbox/checkbox.scss +248 -0
  38. package/styles/components/checkbox-panel/_index.scss +1 -0
  39. package/styles/components/checkbox-panel/checkbox-panel.css +6 -6
  40. package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
  41. package/styles/components/checkbox-panel/checkbox-panel.scss +95 -0
  42. package/styles/components/checkbox-panel/development/styles.scss +27 -0
  43. package/styles/components/chip/_index.scss +2 -0
  44. package/styles/components/chip/chip.scss +104 -0
  45. package/styles/components/combobox/_index.scss +6 -0
  46. package/styles/components/combobox/combobox.scss +238 -0
  47. package/styles/components/cookie-consent/_index.scss +5 -0
  48. package/styles/components/cookie-consent/cookie-consent.scss +31 -0
  49. package/styles/components/countdown/_index.scss +1 -0
  50. package/styles/components/countdown/countdown.css +2 -2
  51. package/styles/components/countdown/countdown.min.css +1 -1
  52. package/styles/components/countdown/countdown.scss +25 -0
  53. package/styles/components/datepicker/_calendar-date-button.scss +85 -0
  54. package/styles/components/datepicker/_calendar-navigation-dropdown.scss +52 -0
  55. package/styles/components/datepicker/_calendar-navigation.scss +12 -0
  56. package/styles/components/datepicker/_calendar-table.scss +27 -0
  57. package/styles/components/datepicker/_calendar.scss +36 -0
  58. package/styles/components/datepicker/_index.scss +6 -0
  59. package/styles/components/datepicker/datepicker.scss +47 -0
  60. package/styles/components/description-list/_index.scss +1 -0
  61. package/styles/components/description-list/description-list.scss +58 -0
  62. package/styles/components/expander/_index.scss +4 -0
  63. package/styles/components/expander/expandable.scss +141 -0
  64. package/styles/components/feedback/_index.scss +10 -0
  65. package/styles/components/feedback/feedback.css +2 -2
  66. package/styles/components/feedback/feedback.min.css +1 -1
  67. package/styles/components/feedback/feedback.scss +113 -0
  68. package/styles/components/file/_index.scss +3 -0
  69. package/styles/components/file/file.scss +164 -0
  70. package/styles/components/file-input/_index.scss +5 -0
  71. package/styles/components/file-input/file-input.css +9 -9
  72. package/styles/components/file-input/file-input.min.css +1 -1
  73. package/styles/components/file-input/file-input.scss +130 -0
  74. package/styles/components/flex/_index.scss +1 -0
  75. package/styles/components/flex/flex.scss +252 -0
  76. package/styles/components/help/_index.scss +2 -0
  77. package/styles/components/help/help.scss +47 -0
  78. package/styles/components/icon/_base-styles.scss +21 -0
  79. package/styles/components/icon/_index.scss +1 -0
  80. package/styles/components/icon/development/internal/icons-example-grid.scss +13 -0
  81. package/styles/components/icon/icon.scss +139 -0
  82. package/styles/components/icon-button/_index.scss +1 -0
  83. package/styles/components/icon-button/icon-button.scss +38 -0
  84. package/styles/components/image/_index.scss +1 -0
  85. package/styles/components/image/development/style.scss +9 -0
  86. package/styles/components/image/image.scss +37 -0
  87. package/styles/components/image/stories/styles.scss +9 -0
  88. package/styles/components/input-group/_field-group.scss +5 -0
  89. package/styles/components/input-group/_index.scss +3 -0
  90. package/styles/components/input-group/_labels.scss +159 -0
  91. package/styles/components/input-group/input-group.css +2 -2
  92. package/styles/components/input-group/input-group.min.css +1 -1
  93. package/styles/components/input-group/input-group.scss +11 -0
  94. package/styles/components/input-panel/input-panel.scss +84 -0
  95. package/styles/components/link/_index.scss +1 -0
  96. package/styles/components/link/link.scss +62 -0
  97. package/styles/components/link-list/_index.scss +2 -0
  98. package/styles/components/link-list/link-list.scss +94 -0
  99. package/styles/components/list/_index.scss +1 -0
  100. package/styles/components/list/list.scss +98 -0
  101. package/styles/components/loader/_index.scss +2 -0
  102. package/styles/components/loader/development/styles.scss +11 -0
  103. package/styles/components/loader/loader.css +6 -6
  104. package/styles/components/loader/loader.min.css +1 -1
  105. package/styles/components/loader/loader.scss +139 -0
  106. package/styles/components/loader/skeleton-loader.css +3 -3
  107. package/styles/components/loader/skeleton-loader.min.css +1 -1
  108. package/styles/components/loader/skeleton-loader.scss +137 -0
  109. package/styles/components/logo/_index.scss +1 -0
  110. package/styles/components/logo/development/styles.scss +9 -0
  111. package/styles/components/logo/logo.scss +90 -0
  112. package/styles/components/menu/_index.scss +1 -0
  113. package/styles/components/menu/_menu-divider.scss +10 -0
  114. package/styles/components/menu/_menu-item.scss +71 -0
  115. package/styles/components/menu/menu.scss +40 -0
  116. package/styles/components/message/_index.scss +2 -0
  117. package/styles/components/message/message.css +2 -2
  118. package/styles/components/message/message.min.css +1 -1
  119. package/styles/components/message/message.scss +187 -0
  120. package/styles/components/modal/_index.scss +3 -0
  121. package/styles/components/modal/modal.scss +107 -0
  122. package/styles/components/nav-link/_index.scss +1 -0
  123. package/styles/components/nav-link/nav-link.scss +66 -0
  124. package/styles/components/pagination/_index.scss +5 -0
  125. package/styles/components/pagination/development/styles.scss +35 -0
  126. package/styles/components/pagination/pagination.scss +49 -0
  127. package/styles/components/popover/_index.scss +1 -0
  128. package/styles/components/popover/popover.scss +19 -0
  129. package/styles/components/progress-bar/_index.scss +1 -0
  130. package/styles/components/progress-bar/progress-bar.css +1 -1
  131. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  132. package/styles/components/progress-bar/progress-bar.scss +27 -0
  133. package/styles/components/radio-button/_index.scss +2 -0
  134. package/styles/components/radio-button/radio-button.css +2 -2
  135. package/styles/components/radio-button/radio-button.min.css +1 -1
  136. package/styles/components/radio-button/radio-button.scss +219 -0
  137. package/styles/components/radio-panel/_index.scss +1 -0
  138. package/styles/components/radio-panel/development/styles.scss +27 -0
  139. package/styles/components/radio-panel/radio-panel.css +2 -2
  140. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  141. package/styles/components/radio-panel/radio-panel.scss +82 -0
  142. package/styles/components/segmented-control/_index.scss +3 -0
  143. package/styles/components/segmented-control/segmented-control.css +4 -4
  144. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  145. package/styles/components/segmented-control/segmented-control.scss +99 -0
  146. package/styles/components/select/_index.scss +3 -0
  147. package/styles/components/select/select.scss +299 -0
  148. package/styles/components/summary-table/_index.scss +1 -0
  149. package/styles/components/summary-table/development/summary-table-example.scss +10 -0
  150. package/styles/components/summary-table/summary-table.scss +49 -0
  151. package/styles/components/system-message/_index.scss +2 -0
  152. package/styles/components/system-message/system-message.css +2 -2
  153. package/styles/components/system-message/system-message.min.css +1 -1
  154. package/styles/components/system-message/system-message.scss +177 -0
  155. package/styles/components/table/_index.scss +6 -0
  156. package/styles/components/table/_table-caption.scss +7 -0
  157. package/styles/components/table/_table-cell.scss +90 -0
  158. package/styles/components/table/_table-head.scss +36 -0
  159. package/styles/components/table/_table-header.scss +65 -0
  160. package/styles/components/table/_table-pagination.scss +126 -0
  161. package/styles/components/table/_table-row.scss +177 -0
  162. package/styles/components/table/table.css +4 -0
  163. package/styles/components/table/table.min.css +1 -1
  164. package/styles/components/table/table.scss +53 -0
  165. package/styles/components/table-of-contents/_index.scss +1 -0
  166. package/styles/components/tabs/_index.scss +1 -0
  167. package/styles/components/tabs/tabs.scss +114 -0
  168. package/styles/components/tag/_index.scss +3 -0
  169. package/styles/components/tag/tag.scss +65 -0
  170. package/styles/components/text-area/_index.scss +4 -0
  171. package/styles/components/text-area/text-area.scss +111 -0
  172. package/styles/components/text-input/_index.scss +4 -0
  173. package/styles/components/text-input/text-input.scss +43 -0
  174. package/styles/components/toast/_index.scss +4 -0
  175. package/styles/components/toast/toast.css +4 -4
  176. package/styles/components/toast/toast.min.css +1 -1
  177. package/styles/components/toast/toast.scss +219 -0
  178. package/styles/components/toggle-switch/_index.scss +2 -0
  179. package/styles/components/toggle-switch/_toggle-slider.scss +123 -0
  180. package/styles/components/toggle-switch/toggle-switch.scss +137 -0
  181. package/styles/components/tooltip/_index.scss +3 -0
  182. package/styles/components/tooltip/popuptip.scss +5 -0
  183. package/styles/components/tooltip/tooltip.scss +87 -0
  184. package/styles/components-beta/description-list/_index.scss +1 -0
  185. package/styles/components-beta/description-list/description-list.scss +80 -0
  186. package/styles/components-beta/link-list/_index.scss +2 -0
  187. package/styles/components-beta/link-list/link-list.scss +81 -0
  188. package/styles/components-beta/nav-link/_index.scss +1 -0
  189. package/styles/components-beta/nav-link/navlink.scss +66 -0
  190. package/styles/components-beta/search/_index.scss +4 -0
  191. package/styles/components-beta/search/search-with-submit-button.scss +37 -0
  192. package/styles/components-beta/search/search.scss +106 -0
  193. package/styles/components-beta/select/_index.scss +3 -0
  194. package/styles/components-beta/select/select.scss +128 -0
  195. package/styles/components-beta/table-of-contents/_index.scss +2 -0
  196. package/styles/components-beta/table-of-contents/table-of-contents.scss +88 -0
  197. package/styles/core/_layers.scss +3 -0
  198. package/styles/core/core.css +61 -3
  199. package/styles/core/core.min.css +1 -1
  200. package/styles/core/core.scss +6 -0
  201. package/styles/core/global/_base-class.scss +38 -0
  202. package/styles/core/global/_index.scss +2 -0
  203. package/styles/core/global/_top-layer.scss +20 -0
  204. package/styles/core/jkl/_colors.scss +26 -0
  205. package/styles/core/jkl/_convert.scss +102 -0
  206. package/styles/core/jkl/_helpers.scss +26 -0
  207. package/styles/core/jkl/_index.scss +18 -0
  208. package/styles/core/jkl/_motion.scss +63 -0
  209. package/styles/core/jkl/_navigation.scss +9 -0
  210. package/styles/core/jkl/_ornaments.scss +28 -0
  211. package/styles/core/jkl/_reset.scss +45 -0
  212. package/styles/core/jkl/_responsive-units.scss +30 -0
  213. package/styles/core/jkl/_screenreader.scss +59 -0
  214. package/styles/core/jkl/_screens.scss +135 -0
  215. package/styles/core/jkl/_shadows.scss +25 -0
  216. package/styles/core/jkl/_spacing.scss +149 -0
  217. package/styles/core/jkl/_theme.scss +119 -0
  218. package/styles/core/jkl/_tokens.scss +58 -0
  219. package/styles/core/jkl/_typography.scss +269 -0
  220. package/styles/core/jkl/_underline.scss +16 -0
  221. package/styles/core/jkl/_z-index.scss +23 -0
  222. package/styles/core/jkl/legacy/_dynamic-colors.scss +40 -0
  223. package/styles/core/jkl/legacy/_index.scss +2 -0
  224. package/styles/core/jkl/legacy/_tokens.scss +566 -0
  225. package/styles/core/resets/_index.scss +2 -0
  226. package/styles/core/resets/_normalize.scss +251 -0
  227. package/styles/core/resets/_reset.scss +68 -0
  228. package/styles/core/theme/_color-tokens.scss +73 -0
  229. package/styles/core/theme/_dynamic-spacing.scss +55 -0
  230. package/styles/core/theme/_index.scss +8 -0
  231. package/styles/core/theme/_legacy-color-tokens.scss +81 -0
  232. package/styles/core/theme/_legacy-tokens.scss +215 -0
  233. package/styles/core/theme/_old-vars.scss +30 -0
  234. package/styles/core/theme/_spacing-tokens.scss +32 -0
  235. package/styles/core/theme/_tokens.scss +32 -0
  236. package/styles/core/theme/_typography.scss +27 -0
  237. package/styles/core/utility/_headings.scss +31 -0
  238. package/styles/core/utility/_index.scss +4 -0
  239. package/styles/core/utility/_paragraphs.scss +18 -0
  240. package/styles/core/utility/_screen-reader.scss +11 -0
  241. package/styles/core/utility/_spacing.scss +49 -0
  242. package/styles/hooks/stories/styles.scss +78 -0
  243. package/styles/shared/input/shared-input-styles.scss +181 -0
  244. package/styles/shared/track/track.scss +27 -0
  245. package/styles/styles.css +38 -34
  246. package/styles/styles.min.css +2 -2
  247. package/styles/styles.scss +52 -0
  248. package/styles/components/checkbox/development/public/fonts/webfonts.css +0 -115
  249. package/styles/components/checkbox/development/public/fonts/webfonts.min.css +0 -1
  250. package/styles/components/file-input/development/public/fonts/_index.scss +0 -1
  251. package/styles/components/file-input/development/public/fonts/webfonts.css +0 -108
  252. package/styles/components/file-input/development/public/fonts/webfonts.min.css +0 -1
  253. package/styles/components/file-input/development/public/fonts/webfonts.scss +0 -137
  254. package/styles/components/menu/development/public/fonts/_index.scss +0 -1
  255. package/styles/components/menu/development/public/fonts/webfonts.css +0 -108
  256. package/styles/components/menu/development/public/fonts/webfonts.min.css +0 -1
  257. package/styles/components/menu/development/public/fonts/webfonts.scss +0 -137
  258. package/styles/components/radio-button/development/public/fonts/_index.scss +0 -1
  259. package/styles/components/radio-button/development/public/fonts/webfonts.css +0 -115
  260. package/styles/components/radio-button/development/public/fonts/webfonts.min.css +0 -1
  261. package/styles/components/radio-button/development/public/fonts/webfonts.scss +0 -145
  262. package/styles/components/text-input/development/public/fonts/_index.scss +0 -1
  263. package/styles/components/text-input/development/public/fonts/webfonts.css +0 -115
  264. package/styles/components/text-input/development/public/fonts/webfonts.min.css +0 -1
  265. package/styles/components/text-input/development/public/fonts/webfonts.scss +0 -145
  266. package/styles/components/toggle-switch/development/public/fonts/_index.scss +0 -1
  267. package/styles/components/toggle-switch/development/public/fonts/webfonts.css +0 -115
  268. package/styles/components/toggle-switch/development/public/fonts/webfonts.min.css +0 -1
  269. package/styles/components/toggle-switch/development/public/fonts/webfonts.scss +0 -145
  270. /package/styles/{components/checkbox/development/public/fonts → fonts}/_index.scss +0 -0
  271. /package/styles/{components/checkbox/development/public/fonts → fonts}/webfonts.scss +0 -0
@@ -0,0 +1,123 @@
1
+ @use "sass:color";
2
+ @use "../../core/jkl";
3
+
4
+ $_slider-rounded: jkl.rem(100px);
5
+
6
+ @include jkl.comfortable-density-variables {
7
+ @include jkl.declare-font-variables("jkl-slider", "body");
8
+
9
+ --jkl-slider-legend-font-size: var(--jkl-body-font-size);
10
+ --jkl-slider-legend-line-height: var(--jkl-body-line-height);
11
+ --jkl-slider-legend-font-weight: #{jkl.$typography-weight-bold};
12
+ }
13
+
14
+ @include jkl.compact-density-variables {
15
+ @include jkl.declare-font-variables("jkl-slider", "small");
16
+
17
+ --jkl-slider-legend-font-size: var(--jkl-small-font-size);
18
+ --jkl-slider-legend-line-height: var(--jkl-small-line-height);
19
+ --jkl-slider-legend-font-weight: #{jkl.$typography-weight-bold};
20
+ }
21
+
22
+ .jkl-toggle-slider {
23
+ --jkl-slider-bg: var(--jkl-color-background-container-low);
24
+ --jkl-slider-pill: var(--jkl-color-background-container-high);
25
+ --jkl-slider-text: var(--jkl-color-text-default);
26
+ --jkl-slider-text--active: var(--jkl-color-text-default);
27
+ --jkl-slider-focus-color: var(--jkl-color-border-action);
28
+ --jkl-slider-hover-color: var(--jkl-color-border-action);
29
+
30
+ @include jkl.use-font-variables("jkl-slider");
31
+
32
+ position: relative;
33
+ overflow: hidden;
34
+ display: flex;
35
+ align-items: flex-start;
36
+ width: 100%;
37
+ flex-direction: column;
38
+ user-select: none;
39
+
40
+ html:not([data-mousenavigation]):not([data-touchnavigation]) &:focus-within {
41
+ .jkl-toggle-slider__pill {
42
+ box-shadow: inset 0 0 0 jkl.rem(2px) var(--jkl-slider-focus-color);
43
+ }
44
+ }
45
+
46
+ &__legend {
47
+ margin-bottom: jkl.$spacing-8;
48
+
49
+ @include jkl.use-font-variables("jkl-slider-legend");
50
+
51
+ &--sr-only {
52
+ @include jkl.screenreader-only;
53
+ }
54
+ }
55
+
56
+ &__inputs {
57
+ $_slider-offset: 2px;
58
+ display: flex;
59
+ position: relative;
60
+ overflow: hidden;
61
+ background-color: var(--jkl-slider-bg);
62
+ border-radius: $_slider-rounded;
63
+ border: $_slider-offset solid var(--jkl-slider-bg);
64
+ }
65
+
66
+ &__input {
67
+ position: absolute;
68
+ opacity: 0;
69
+ }
70
+
71
+ &__label {
72
+ display: flex;
73
+ align-items: center;
74
+ justify-content: center;
75
+ z-index: 1;
76
+ cursor: pointer;
77
+ padding: jkl.$spacing-2 jkl.$spacing-16;
78
+ color: var(--jkl-slider-pill-text);
79
+ -webkit-tap-highlight-color: transparent;
80
+
81
+ /* Prevent really short labels to look like circles */
82
+ min-width: 30px;
83
+
84
+ &:hover {
85
+ color: var(--jkl-slider-hover-color);
86
+ }
87
+
88
+ &--selected {
89
+ @include jkl.no-grow-bold;
90
+ color: var(--jkl-slider-pill-text--active);
91
+ }
92
+ }
93
+
94
+ &__pill {
95
+ height: 100%;
96
+ background-color: var(--jkl-slider-pill);
97
+ position: absolute;
98
+ transition-property: width, transform;
99
+ border-radius: $_slider-rounded;
100
+
101
+ @include jkl.motion(standard, expressive);
102
+ }
103
+
104
+ @include jkl.from-medium-device {
105
+ flex-direction: row;
106
+ align-items: center;
107
+
108
+ &__legend {
109
+ margin-bottom: 0;
110
+ margin-right: 1.2em;
111
+ }
112
+ }
113
+
114
+ @include jkl.forced-colors-mode {
115
+ & .jkl-toggle-slider__inputs {
116
+ background-color: Canvas;
117
+ }
118
+
119
+ & .jkl-toggle-slider__pill {
120
+ background-color: ButtonFace;
121
+ }
122
+ }
123
+ }
@@ -0,0 +1,137 @@
1
+ @charset "UTF-8";
2
+ @use "../../core/jkl";
3
+ @use "./toggle-slider";
4
+
5
+ @include jkl.comfortable-density-variables {
6
+ @include jkl.declare-font-variables("jkl-toggle", "body");
7
+
8
+ --jkl-toggle-switch-height: #{jkl.rem(28px)};
9
+ --jkl-toggle-switch-width: #{jkl.rem(48px)};
10
+ --jkl-toggle-switch-knob-size: #{jkl.rem(20px)};
11
+ --jkl-toggle-switch-indicator-spacing: 0;
12
+ --jkl-toggle-switch-help-label-spacing: var(--jkl-unit-02);
13
+ }
14
+
15
+ @include jkl.compact-density-variables {
16
+ @include jkl.declare-font-variables("jkl-toggle", "small");
17
+
18
+ --jkl-toggle-switch-height: #{jkl.rem(20px)};
19
+ --jkl-toggle-switch-width: #{jkl.rem(36px)};
20
+ --jkl-toggle-switch-knob-size: #{jkl.rem(12px)};
21
+ --jkl-toggle-switch-indicator-spacing: #{jkl.rem(-2px)};
22
+ --jkl-toggle-switch-help-label-spacing: 0;
23
+ }
24
+
25
+ .jkl-toggle-switch {
26
+ --border-width: #{jkl.rem(1px)};
27
+ --switch-padding: #{jkl.rem(4px)};
28
+ --knob-position: 0;
29
+ --switch-border-color: var(--jkl-color-border-action);
30
+ --indicator-color: var(--jkl-color-background-container-high);
31
+ --knob-border-color: var(--jkl-color-border-action);
32
+ --knob-color: var(--jkl-color-background-container-high);
33
+ --text-color: var(--jkl-color-text-default);
34
+ --icon-color: var(--jkl-color-text-inverted);
35
+
36
+ background: transparent;
37
+ color: var(--text-color);
38
+ padding: 0;
39
+ cursor: pointer;
40
+ -webkit-tap-highlight-color: transparent;
41
+
42
+ display: flex;
43
+ flex-direction: row-reverse;
44
+ align-items: center;
45
+ gap: var(--jkl-unit-10);
46
+ touch-action: none; // Forhindrer at siden flytter på seg når man drar i toggle
47
+
48
+ @include jkl.use-font-variables("jkl-toggle");
49
+ @include jkl.reset-outline;
50
+
51
+ @include jkl.forced-colors-mode {
52
+ border-color: transparent;
53
+ border-style: none;
54
+ }
55
+
56
+ &[aria-pressed="true"],
57
+ [aria-checked="true"] > & {
58
+ --indicator-color: var(--jkl-color-background-container-inverted);
59
+ --knob-color: var(--jkl-color-text-inverted);
60
+ --knob-position: calc(
61
+ var(--jkl-toggle-switch-width) - var(--jkl-toggle-switch-knob-size) -
62
+ var(--switch-padding) * 2
63
+ );
64
+ }
65
+
66
+ &[disabled] {
67
+ cursor: revert;
68
+
69
+ --text-color: var(--jkl-color-text-subdued);
70
+ --switch-border-color: var(--jkl-color-border-subdued);
71
+ --knob-border-color: var(--jkl-color-border-subdued);
72
+
73
+ &[aria-pressed="true"],
74
+ [aria-checked="true"] > & {
75
+ --indicator-color: var(--jkl-color-border-subdued);
76
+ }
77
+ }
78
+ }
79
+
80
+ .jkl-toggle-switch-widget {
81
+ position: relative;
82
+ box-sizing: border-box;
83
+ display: flex;
84
+ flex-direction: row;
85
+ align-items: center;
86
+ height: var(--jkl-toggle-switch-height);
87
+ width: var(--jkl-toggle-switch-width);
88
+ border-radius: 9999px;
89
+ border: var(--border-width) solid var(--switch-border-color);
90
+ overflow: hidden;
91
+ user-select: none;
92
+ padding: var(--switch-padding);
93
+ background-color: var(--indicator-color);
94
+ pointer-events: none;
95
+
96
+ @include jkl.forced-colors-mode {
97
+ border: jkl.rem(1px) solid ButtonText;
98
+ }
99
+
100
+ .jkl-toggle-switch:focus-visible & {
101
+ @include jkl.focus-outline;
102
+ }
103
+
104
+ &__slider {
105
+ position: relative;
106
+ box-sizing: border-box;
107
+ height: var(--jkl-toggle-switch-knob-size);
108
+ width: var(--jkl-toggle-switch-knob-size);
109
+ color: var(--icon-color);
110
+
111
+ @include jkl.motion;
112
+ transition-property: translate;
113
+ translate: var(--knob-position);
114
+ }
115
+
116
+ &__knob {
117
+ position: absolute;
118
+ inset: 0;
119
+ border-radius: 9999px;
120
+ border: var(--border-width) solid var(--knob-border-color);
121
+ background-color: var(--knob-color);
122
+ }
123
+
124
+ &__indicator {
125
+ position: absolute;
126
+ top: 50%;
127
+ right: 100%;
128
+ margin-right: var(--jkl-toggle-switch-indicator-spacing);
129
+ transform: translate(0, -50%);
130
+
131
+ & > .jkl-icon__icon {
132
+ // Uten dette får ikonet feil alignment. Mulig bug i ikonpakken?
133
+ position: absolute;
134
+ inset: 0;
135
+ }
136
+ }
137
+ }
@@ -0,0 +1,3 @@
1
+ @forward "tooltip";
2
+ @forward "popuptip";
3
+ @use "../icon" as icon;
@@ -0,0 +1,5 @@
1
+ .jkl-popuptip {
2
+ &__content-wrapper:focus {
3
+ outline: none;
4
+ }
5
+ }
@@ -0,0 +1,87 @@
1
+ @charset "UTF-8";
2
+ @use "../../core/jkl";
3
+
4
+ $_tooltip-border-width: jkl.rem(1px);
5
+ $_focus-ring-distance: jkl.rem(
6
+ -1px
7
+ ); // Negativ margin for å unngå subpixel mellomrom mellom border og box-shadow
8
+ $_focus-ring-width: jkl.rem(2px);
9
+
10
+ @include jkl.comfortable-density-variables {
11
+ --content-padding: #{jkl.$unit-20};
12
+
13
+ @include jkl.small-device {
14
+ --content-padding: #{jkl.$unit-15};
15
+ }
16
+ }
17
+
18
+ @include jkl.compact-density-variables {
19
+ --content-padding: #{jkl.$unit-10};
20
+ }
21
+
22
+ .jkl-tooltip-trigger {
23
+ all: unset;
24
+
25
+ &:focus {
26
+ @include jkl.keyboard-navigation {
27
+ @include jkl.no-grow-bold;
28
+ }
29
+ }
30
+ }
31
+
32
+ .jkl-tooltip-content {
33
+ --background-color: var(--jkl-color-background-container-inverted);
34
+
35
+ @include jkl.text-style("small");
36
+ background-color: var(--background-color);
37
+ color: var(--jkl-color-text-inverted);
38
+ display: inline-block;
39
+ min-width: min-content;
40
+ max-width: min(
41
+ jkl.rem(310px),
42
+ 100%
43
+ ); // 10px mindre enn smaleste støttede skjerm
44
+ padding: var(--content-padding);
45
+ position: absolute;
46
+ z-index: jkl.$z-index--floating;
47
+
48
+ @include jkl.forced-colors-mode {
49
+ border: 1px solid CanvasText;
50
+ }
51
+ }
52
+
53
+ .jkl-tooltip-question-button {
54
+ @include jkl.motion("exit", "snappy");
55
+ transition-property: color;
56
+ cursor: pointer;
57
+ position: relative;
58
+ background-color: transparent;
59
+ padding: 0;
60
+ display: inline-flex;
61
+ align-items: center;
62
+ color: var(--jkl-color-text-interactive);
63
+ transform: translateY(max(0.16em, jkl.rem(4px))); // Cap på 4px
64
+ font-size: 1.2em;
65
+ border-radius: 9999px;
66
+
67
+ @include jkl.reset-outline;
68
+
69
+ &:hover {
70
+ --button-color: var(--jkl-color-text-interactive-hover);
71
+ }
72
+
73
+ &:focus-visible {
74
+ @include jkl.focus-outline(0);
75
+ }
76
+
77
+ &::after {
78
+ content: "";
79
+ position: absolute;
80
+
81
+ top: 50%;
82
+ left: 50%;
83
+ translate: -50% -50%;
84
+ min-width: 44px;
85
+ min-height: 44px;
86
+ }
87
+ }
@@ -0,0 +1 @@
1
+ @forward "description-list";
@@ -0,0 +1,80 @@
1
+ @use "../../core/jkl";
2
+
3
+ .jkl-description-list--beta {
4
+ --spacing: 0;
5
+
6
+ container: description-list / inline-size;
7
+ display: grid;
8
+ grid-template-columns: 1fr;
9
+ column-gap: 1em;
10
+
11
+ &[data-alignment="justified"] {
12
+ --spacing: var(--jkl-spacing-xs);
13
+ grid-template-columns: 1fr max-content;
14
+
15
+ .title,
16
+ .value {
17
+ grid-row: 1;
18
+ }
19
+
20
+ .value {
21
+ text-align: end;
22
+ }
23
+ }
24
+
25
+ &[data-alignment="horizontal"] {
26
+ --spacing: var(--jkl-spacing-xs);
27
+ grid-template-columns: max-content 1fr;
28
+ }
29
+
30
+ &[data-alignment="vertical"] {
31
+ --spacing: var(--jkl-spacing-s);
32
+ }
33
+
34
+ .jkl-description-list-item--beta {
35
+ display: grid;
36
+ grid-template-columns: subgrid;
37
+ grid-column: 1 / -1;
38
+
39
+ @container description-list (width < 30ch) {
40
+ grid-template-columns: 1fr;
41
+ --spacing: var(--jkl-spacing-s);
42
+
43
+ .title,
44
+ .value {
45
+ grid-row: unset;
46
+ }
47
+
48
+ .value {
49
+ text-align: start;
50
+ }
51
+ }
52
+
53
+ &:not(:last-of-type) {
54
+ margin-block-end: var(--spacing);
55
+ }
56
+
57
+ .title {
58
+ font-weight: bold;
59
+ }
60
+
61
+ dd {
62
+ margin-inline-start: 0;
63
+
64
+ &.support-text {
65
+ grid-column: 1 / -1;
66
+ color: var(--jkl-color-text-subdued);
67
+ }
68
+ }
69
+ }
70
+
71
+ &[data-separators="true"] {
72
+ > * {
73
+ &:not(:last-of-type) {
74
+ --spacing: var(--jkl-spacing-s);
75
+ border-block-end: 1px solid var(--jkl-color-border-separator);
76
+ padding-block-end: var(--spacing);
77
+ }
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,2 @@
1
+ @forward "link-list";
2
+ @use "../../components/icon";
@@ -0,0 +1,81 @@
1
+ @use "../../core/jkl";
2
+
3
+ .jkl-link-list--beta {
4
+ --border: 1px solid var(--jkl-color-border-separator);
5
+ --text-color: var(--jkl-color-text-default);
6
+
7
+ @include jkl.text-style("body");
8
+
9
+ .jkl-link-list-title {
10
+ margin-block-end: var(--jkl-unit-10);
11
+ @include jkl.text-style("small");
12
+ }
13
+
14
+ & ul {
15
+ display: flex;
16
+ flex-direction: column;
17
+ width: 100%;
18
+ padding: 0;
19
+ margin: 0;
20
+ height: min-content;
21
+ }
22
+
23
+ & .jkl-link-list-item {
24
+ display: flex;
25
+
26
+ &:not(:last-of-type) {
27
+ .jkl-link-list-link {
28
+ border-block-end: var(--border);
29
+ }
30
+ }
31
+ }
32
+
33
+ & .jkl-link-list-link {
34
+ display: flex;
35
+ align-items: center;
36
+ gap: var(--jkl-unit-20);
37
+ width: 100%;
38
+ text-decoration: none;
39
+ color: var(--text-color);
40
+ text-wrap: balance;
41
+ box-sizing: border-box;
42
+ }
43
+
44
+ &:has(ul) {
45
+ .jkl-link-list-title {
46
+ margin-inline-start: var(--jkl-unit-05);
47
+ }
48
+ }
49
+
50
+ & ul {
51
+ border-radius: var(--jkl-unit-05);
52
+ overflow: hidden;
53
+ background: var(--jkl-color-background-container-low);
54
+
55
+ .jkl-link-list-link {
56
+ justify-content: space-between;
57
+ padding: var(--jkl-unit-20);
58
+
59
+
60
+ @include jkl.motion("standard", "productive");
61
+ transition-property: background;
62
+
63
+ &::after {
64
+ content: "arrow_forward" / "";
65
+ font-family: "Fremtind Material Symbols";
66
+ font-weight: 300;
67
+
68
+ @include jkl.motion("standard", "productive");
69
+ transition-property: translate;
70
+ }
71
+
72
+ &:is(:hover, :focus-visible) {
73
+ background: var(--jkl-color-background-interactive-selected);
74
+
75
+ &::after {
76
+ translate: 4px 0;
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
@@ -0,0 +1 @@
1
+ @forward "navlink";
@@ -0,0 +1,66 @@
1
+ @use "../../core/jkl/index" as jkl;
2
+
3
+ .jkl-navlink--beta {
4
+ --border-radius: 4px;
5
+ --separator: 1px solid var(--jkl-color-border-separator);
6
+
7
+ display: grid;
8
+ grid-template-columns: 1fr auto;
9
+ align-items: center;
10
+ column-gap: 2em;
11
+ color: inherit;
12
+ text-decoration: none;
13
+ background-color: var(--jkl-color-background-container-low);
14
+ padding: var(--jkl-spacing-s);
15
+ border-radius: 0;
16
+
17
+ @include jkl.text-style("body");
18
+
19
+ @include jkl.motion("easeInBounceOut", "productive");
20
+ transition-property: background-color;
21
+
22
+ .title,
23
+ .description {
24
+ grid-column: 1;
25
+ }
26
+
27
+ &:has(.description) {
28
+ .title {
29
+ font-weight: bold;
30
+ }
31
+ }
32
+
33
+ &::after {
34
+ content: "arrow_forward" / "";
35
+ font-family: "Fremtind Material Symbols";
36
+ align-self: center;
37
+ grid-column: 2;
38
+ grid-row: 1 / span 999;
39
+ translate: 0;
40
+
41
+ @include jkl.motion("easeInBounceOut", "productive");
42
+ transition-property: translate;
43
+ }
44
+
45
+ &:hover, &:focus-visible {
46
+ background-color: var(--jkl-color-background-interactive-selected);
47
+
48
+ &::after {
49
+ translate: 4px 0;
50
+ }
51
+ }
52
+
53
+ &:first-of-type {
54
+ border-start-start-radius: var(--border-radius);
55
+ border-start-end-radius: var(--border-radius);
56
+ }
57
+
58
+ &:last-of-type {
59
+ border-end-start-radius: var(--border-radius);
60
+ border-end-end-radius: var(--border-radius);
61
+ }
62
+
63
+ &:has( + .jkl-navlink--beta) {
64
+ border-block-end: var(--separator);
65
+ }
66
+ }
@@ -0,0 +1,4 @@
1
+ @forward "search";
2
+ @forward "search-with-submit-button";
3
+ @use "../../components/icon/index" as icon;
4
+ @use "../../components/input-group/index" as input-group;
@@ -0,0 +1,37 @@
1
+ @use "../../core/jkl/index" as jkl;
2
+ @use "../../shared/input/shared-input-styles" as shared;
3
+
4
+ .jkl-search--beta:has(button.jkl-search-submit){
5
+ display: grid;
6
+ grid-template-columns: 1fr max-content;
7
+ align-items: end;
8
+
9
+ .input-wrapper {
10
+ border-inline-end: 0;
11
+ border-radius: 3px 0 0 3px;
12
+ }
13
+
14
+ button.jkl-search-submit {
15
+ height: var(--jkl-text-input-height);
16
+ border-radius: 0 3px 3px 0;
17
+ border: var(--border);
18
+ border-inline-start: 0;
19
+ min-width: unset;
20
+
21
+ &::before {
22
+ content: "";
23
+ position: absolute;
24
+ width: 1px;
25
+ inset: 0;
26
+ inset-block: 20%;
27
+ background-color: var(--jkl-color-border-separator);
28
+
29
+ @include jkl.motion;
30
+ transition-property: inset;
31
+ }
32
+
33
+ &:hover::before {
34
+ inset-block: 0;
35
+ }
36
+ }
37
+ }