@fremtind/jokul 4.6.1 → 4.7.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.
- package/build/build-stats.html +1 -1
- package/build/cjs/components/expander/Expander.cjs +1 -1
- package/build/cjs/components/expander/Expander.cjs.map +1 -1
- package/build/cjs/components/popover/Popover.cjs +1 -1
- package/build/cjs/components/popover/Popover.cjs.map +1 -1
- package/build/cjs/components/popover/types.d.cts +8 -1
- package/build/cjs/components/select/Select.cjs +1 -1
- package/build/cjs/components/select/Select.cjs.map +1 -1
- package/build/cjs/components/system-message/types.d.cts +7 -2
- package/build/cjs/components/typography/Text.cjs +2 -0
- package/build/cjs/components/typography/Text.cjs.map +1 -0
- package/build/cjs/components/typography/Text.d.cts +5 -0
- package/build/cjs/components/typography/Title.cjs +2 -0
- package/build/cjs/components/typography/Title.cjs.map +1 -0
- package/build/cjs/components/typography/Title.d.cts +5 -0
- package/build/cjs/components/typography/index.cjs +2 -0
- package/build/cjs/components/typography/index.cjs.map +1 -0
- package/build/cjs/components/typography/index.d.cts +3 -0
- package/build/cjs/components/typography/types.cjs +2 -0
- package/build/cjs/components/typography/types.cjs.map +1 -0
- package/build/cjs/components/typography/types.d.cts +48 -0
- package/build/cjs/hooks/useListNavigation/useListNavigation.cjs +1 -1
- package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
- package/build/cjs/hooks/useListNavigation/useListNavigation.d.cts +11 -2
- package/build/es/components/datepicker/DatePicker.js +1 -1
- package/build/es/components/datepicker/internal/Calendar.js +1 -1
- package/build/es/components/datepicker/internal/useCalendar.js +1 -1
- package/build/es/components/datepicker/internal/utils.js +1 -1
- package/build/es/components/expander/Expander.js +1 -1
- package/build/es/components/expander/Expander.js.map +1 -1
- package/build/es/components/menu/Menu.js +1 -1
- package/build/es/components/popover/Popover.js +1 -1
- package/build/es/components/popover/Popover.js.map +1 -1
- package/build/es/components/popover/types.d.ts +8 -1
- package/build/es/components/select/Select.js +1 -1
- package/build/es/components/select/Select.js.map +1 -1
- package/build/es/components/system-message/types.d.ts +7 -2
- package/build/es/components/toast/toastContext.js +1 -1
- package/build/es/components/tooltip/Tooltip.js +1 -1
- package/build/es/components/typography/Text.d.ts +5 -0
- package/build/es/components/typography/Text.js +2 -0
- package/build/es/components/typography/Text.js.map +1 -0
- package/build/es/components/typography/Title.d.ts +5 -0
- package/build/es/components/typography/Title.js +2 -0
- package/build/es/components/typography/Title.js.map +1 -0
- package/build/es/components/typography/index.d.ts +3 -0
- package/build/es/components/typography/index.js +2 -0
- package/build/es/components/typography/index.js.map +1 -0
- package/build/es/components/typography/types.d.ts +48 -0
- package/build/es/components/typography/types.js +2 -0
- package/build/es/components/typography/types.js.map +1 -0
- package/build/es/hooks/stories/content.js +1 -1
- package/build/es/hooks/useListNavigation/useListNavigation.d.ts +11 -2
- package/build/es/hooks/useListNavigation/useListNavigation.js +1 -1
- package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
- package/build/es/index.js +1 -1
- package/build/es/utilities/constants/index.js +1 -1
- package/build/es/utilities/constants/unicode.js +1 -1
- package/build/es/utilities/formatters/bytes/formatBytes.js +1 -1
- package/build/es/utilities/formatters/fodselsnummer/formatFodselsnummer.js +1 -1
- package/build/es/utilities/formatters/kontonummer/formatKontonummer.js +1 -1
- package/build/es/utilities/formatters/kortnummer/formatKortnummer.js +1 -1
- package/build/es/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.js +1 -1
- package/build/es/utilities/formatters/telefonnummer/formatTelefonnummer.js +1 -1
- package/build/es/utilities/formatters/valuta/formatValuta.js +1 -1
- package/build/es/utilities/index.js +1 -1
- package/build/{index-CWRMnfcx.js → index-C1iqmqvT.js} +2 -2
- package/build/{index-CWRMnfcx.js.map → index-C1iqmqvT.js.map} +1 -1
- package/build/{utils-CcE6HjQp.js → utils-CtwpNW4I.js} +2 -2
- package/build/{utils-CcE6HjQp.js.map → utils-CtwpNW4I.js.map} +1 -1
- package/package.json +18 -4
- package/styles/components/countdown/countdown.css +2 -2
- package/styles/components/countdown/countdown.min.css +1 -1
- package/styles/components/expander/expandable.css +12 -10
- package/styles/components/expander/expandable.min.css +1 -1
- package/styles/components/expander/expandable.scss +15 -12
- package/styles/components/feedback/feedback.css +2 -2
- package/styles/components/feedback/feedback.min.css +1 -1
- package/styles/components/file-input/file-input.css +9 -9
- package/styles/components/file-input/file-input.min.css +1 -1
- package/styles/components/input-group/input-group.css +2 -2
- package/styles/components/input-group/input-group.min.css +1 -1
- package/styles/components/loader/loader.css +6 -6
- package/styles/components/loader/loader.min.css +1 -1
- package/styles/components/loader/skeleton-loader.css +3 -3
- package/styles/components/loader/skeleton-loader.min.css +1 -1
- package/styles/components/message/message.css +2 -2
- package/styles/components/message/message.min.css +1 -1
- package/styles/components/progress-bar/progress-bar.css +1 -1
- package/styles/components/progress-bar/progress-bar.min.css +1 -1
- package/styles/components/segmented-control/segmented-control.css +2 -2
- package/styles/components/segmented-control/segmented-control.min.css +1 -1
- package/styles/components/select/select.css +63 -14
- package/styles/components/select/select.min.css +1 -1
- package/styles/components/select/select.scss +120 -22
- package/styles/components/system-message/system-message.css +7 -16
- package/styles/components/system-message/system-message.min.css +1 -1
- package/styles/components/system-message/system-message.scss +2 -10
- package/styles/components/toast/toast.css +4 -4
- package/styles/components/toast/toast.min.css +1 -1
- package/styles/components/typography/_index.scss +2 -0
- package/styles/components/typography/text.css +52 -0
- package/styles/components/typography/text.min.css +1 -0
- package/styles/components/typography/text.scss +55 -0
- package/styles/components/typography/title.css +70 -0
- package/styles/components/typography/title.min.css +1 -0
- package/styles/components/typography/title.scss +58 -0
- package/styles/core/core.css +1 -1
- package/styles/core/core.min.css +1 -1
- package/styles/core/utility/_paragraphs.scss +11 -1
- package/styles/styles.css +220 -62
- package/styles/styles.min.css +2 -2
- package/styles/styles.scss +1 -0
|
@@ -141,17 +141,18 @@
|
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
&__options-menu {
|
|
144
|
-
position: absolute;
|
|
145
|
-
left: jkl.rem(-1px);
|
|
146
|
-
right: jkl.rem(-1px);
|
|
147
|
-
top: 100%;
|
|
148
|
-
z-index: jkl.$z-index--dropdown;
|
|
149
|
-
|
|
150
144
|
background-color: var(--jkl-color-background-container-high);
|
|
151
145
|
border: jkl.rem(2px) solid var(--jkl-color-border-input-focus);
|
|
152
|
-
border-top: none;
|
|
153
|
-
border-radius: 0 0 var(--border-radius) var(--border-radius);
|
|
154
146
|
box-sizing: border-box;
|
|
147
|
+
// Strekker seg ut over kantene på trigger-knappen for å dekke
|
|
148
|
+
// den 1px brede borderen, slik at listen visuelt henger sammen
|
|
149
|
+
// med inputfeltet.
|
|
150
|
+
margin-inline: jkl.rem(-1px);
|
|
151
|
+
width: calc(100% + #{jkl.rem(2px)});
|
|
152
|
+
// Definerer egne tokens her fordi listen rendres i en portal og
|
|
153
|
+
// ikke arver kaskaderte custom properties fra `.jkl-select`.
|
|
154
|
+
--min-option-height: min(var(--jkl-unit-60), 3rem);
|
|
155
|
+
--option-padding: var(--jkl-unit-05) 0.75em;
|
|
155
156
|
|
|
156
157
|
overflow-y: auto;
|
|
157
158
|
// Sett makshøyde på listen til høyden av (maxShownOptions + 0.5) ganger høyden på ett enlinjes valg
|
|
@@ -160,9 +161,23 @@
|
|
|
160
161
|
var(--min-option-height)
|
|
161
162
|
);
|
|
162
163
|
|
|
163
|
-
|
|
164
|
+
// Standard: lista ligger under triggeren — flat topp, runde
|
|
165
|
+
// bunnhjørner, ingen border på toppen som ville duplisert
|
|
166
|
+
// knappens border.
|
|
167
|
+
&[data-popover-placement="bottom"] {
|
|
168
|
+
border-top: none;
|
|
169
|
+
border-radius: 0 0 var(--jkl-border-radius-s)
|
|
170
|
+
var(--jkl-border-radius-s);
|
|
171
|
+
}
|
|
164
172
|
|
|
165
|
-
|
|
173
|
+
// Når `flip` snur lista over knappen byttes flat side og runde
|
|
174
|
+
// hjørner, slik at lista og knappen fortsatt henger sammen
|
|
175
|
+
// visuelt.
|
|
176
|
+
&[data-popover-placement="top"] {
|
|
177
|
+
border-bottom: none;
|
|
178
|
+
border-radius: var(--jkl-border-radius-s)
|
|
179
|
+
var(--jkl-border-radius-s) 0 0;
|
|
180
|
+
}
|
|
166
181
|
}
|
|
167
182
|
|
|
168
183
|
&__option-wrapper {
|
|
@@ -218,8 +233,6 @@
|
|
|
218
233
|
&--open {
|
|
219
234
|
.jkl-select__search-input,
|
|
220
235
|
.jkl-select__button {
|
|
221
|
-
border-bottom-left-radius: 0;
|
|
222
|
-
border-bottom-right-radius: 0;
|
|
223
236
|
border-color: var(--jkl-color-border-input-focus);
|
|
224
237
|
background-color: var(--jkl-color-background-container-high);
|
|
225
238
|
box-shadow: 0 0 0 jkl.rem(1px)
|
|
@@ -229,6 +242,24 @@
|
|
|
229
242
|
transform: translateY(calc(-50% + #{jkl.rem(-3px)}));
|
|
230
243
|
}
|
|
231
244
|
}
|
|
245
|
+
|
|
246
|
+
// Lista ligger under (default): flat bunn på input/knapp.
|
|
247
|
+
.jkl-select__outer-wrapper[data-popover-placement="bottom"] {
|
|
248
|
+
.jkl-select__search-input,
|
|
249
|
+
.jkl-select__button {
|
|
250
|
+
border-bottom-left-radius: 0;
|
|
251
|
+
border-bottom-right-radius: 0;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Lista ligger over: flat topp på input/knapp.
|
|
256
|
+
.jkl-select__outer-wrapper[data-popover-placement="top"] {
|
|
257
|
+
.jkl-select__search-input,
|
|
258
|
+
.jkl-select__button {
|
|
259
|
+
border-top-left-radius: 0;
|
|
260
|
+
border-top-right-radius: 0;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
232
263
|
}
|
|
233
264
|
|
|
234
265
|
&--invalid {
|
|
@@ -256,21 +287,88 @@
|
|
|
256
287
|
border-color: Highlight;
|
|
257
288
|
}
|
|
258
289
|
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
259
292
|
|
|
260
|
-
|
|
261
|
-
|
|
293
|
+
// Options rendres i portal og er ikke descendants av `.jkl-select`,
|
|
294
|
+
// så forced-colors-reglene må stå på topp-nivå for å treffe dem.
|
|
295
|
+
@include jkl.forced-colors-mode {
|
|
296
|
+
.jkl-select__option {
|
|
297
|
+
color: CanvasText;
|
|
262
298
|
|
|
263
|
-
|
|
264
|
-
|
|
299
|
+
border-top: 1px solid Canvas;
|
|
300
|
+
border-bottom: 1px solid Canvas;
|
|
265
301
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
302
|
+
&:hover,
|
|
303
|
+
&:focus {
|
|
304
|
+
border-top: 1px solid SelectedItem;
|
|
305
|
+
border-bottom: 1px solid SelectedItem;
|
|
270
306
|
|
|
271
|
-
|
|
272
|
-
}
|
|
307
|
+
@include jkl.no-grow-bold;
|
|
273
308
|
}
|
|
274
309
|
}
|
|
275
310
|
}
|
|
311
|
+
|
|
312
|
+
// Listen rendres i en portal via `Popover`. Vi nøytraliserer Popover sin
|
|
313
|
+
// standard padding/bakgrunn/skygge slik at `.jkl-select__options-menu`
|
|
314
|
+
// selv styrer ramme og bakgrunn — også når Select brukes inne i en
|
|
315
|
+
// Card, ExpandablePanel eller andre containere med overflow-clip.
|
|
316
|
+
// Select skal følge samme lagdeling som andre dropdown-/menykomponenter
|
|
317
|
+
// (Combobox, Datepicker, Menu) og ikke arve Popover sitt floating-nivå.
|
|
318
|
+
.jkl-popover.jkl-select__popover {
|
|
319
|
+
background: none;
|
|
320
|
+
box-shadow: none;
|
|
321
|
+
border-radius: 0;
|
|
322
|
+
z-index: jkl.$z-index--dropdown;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// Mild fade + slide-in når lista mounter i portalen. Animeres på
|
|
326
|
+
// selve listbox-en — ikke på popover-wrapperen — fordi wrapperen
|
|
327
|
+
// bærer floating-ui sin posisjonerings-`transform`. Hadde vi animert
|
|
328
|
+
// wrapperen ville `translateY` overstyrt floating-ui's transform i
|
|
329
|
+
// animasjonsvinduet, og lista ville blinket i (0,0).
|
|
330
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
331
|
+
.jkl-select__options-menu {
|
|
332
|
+
animation: jkl-select-options-menu-in
|
|
333
|
+
var(--jkl-motion-timing-snappy)
|
|
334
|
+
var(--jkl-motion-easing-standard);
|
|
335
|
+
|
|
336
|
+
// Når lista flippes opp animerer vi fra motsatt retning slik
|
|
337
|
+
// at bevegelsen alltid kommer fra triggeren.
|
|
338
|
+
&[data-popover-placement="top"] {
|
|
339
|
+
animation-name: jkl-select-options-menu-in-from-top;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
@keyframes jkl-select-options-menu-in {
|
|
345
|
+
from {
|
|
346
|
+
opacity: 0;
|
|
347
|
+
transform: translateY(jkl.rem(-4px));
|
|
348
|
+
}
|
|
349
|
+
to {
|
|
350
|
+
opacity: 1;
|
|
351
|
+
transform: translateY(0);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
@keyframes jkl-select-options-menu-in-from-top {
|
|
356
|
+
from {
|
|
357
|
+
opacity: 0;
|
|
358
|
+
transform: translateY(jkl.rem(4px));
|
|
359
|
+
}
|
|
360
|
+
to {
|
|
361
|
+
opacity: 1;
|
|
362
|
+
transform: translateY(0);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// Options rendres i en portal og er ikke lenger descendants av
|
|
367
|
+
// `.jkl-select`, så regelen `.jkl-select & *:focus-visible { outline:
|
|
368
|
+
// none }` treffer dem ikke. Vi gjenoppretter fokus-visualiseringen
|
|
369
|
+
// (background-color via &:focus) ved å eksplisitt fjerne den native
|
|
370
|
+
// outlinen på options i portalen.
|
|
371
|
+
.jkl-select__option:focus-visible {
|
|
372
|
+
outline: none;
|
|
373
|
+
}
|
|
276
374
|
}
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
@layer jokul.components {
|
|
5
5
|
.jkl-system-message {
|
|
6
|
-
--jkl-system-message-icon-height: var(--jkl-unit-30);
|
|
7
|
-
--jkl-system-message-icon-padding: 0.1875rem 0 0 0;
|
|
8
6
|
--jkl-system-message-content-padding: var(--jkl-unit-30);
|
|
9
7
|
--jkl-system-message-dismiss-button-size: var(--jkl-unit-40);
|
|
10
8
|
--jkl-system-message-dismiss-button-margin: -0.40625rem -1.125rem -0.40625rem
|
|
@@ -19,19 +17,18 @@
|
|
|
19
17
|
box-sizing: border-box;
|
|
20
18
|
}
|
|
21
19
|
.jkl-system-message__content {
|
|
20
|
+
font-size: var(--jkl-font-size-3);
|
|
21
|
+
line-height: var(--jkl-line-height-tight);
|
|
22
|
+
font-weight: 400;
|
|
23
|
+
--jkl-icon-weight: 300;
|
|
22
24
|
box-sizing: border-box;
|
|
23
25
|
padding: var(--jkl-system-message-content-padding);
|
|
24
26
|
display: grid;
|
|
25
27
|
grid-template-columns: min-content 1fr min-content;
|
|
26
|
-
align-items:
|
|
28
|
+
align-items: start;
|
|
27
29
|
width: 100%;
|
|
28
30
|
margin: 0 auto;
|
|
29
31
|
}
|
|
30
|
-
.jkl-system-message__icon {
|
|
31
|
-
height: var(--jkl-system-message-icon-height);
|
|
32
|
-
margin: var(--jkl-system-message-icon-padding);
|
|
33
|
-
flex-shrink: 0;
|
|
34
|
-
}
|
|
35
32
|
@media screen and (forced-colors: active) {
|
|
36
33
|
.jkl-system-message__icon {
|
|
37
34
|
stroke: CanvasText;
|
|
@@ -41,10 +38,6 @@
|
|
|
41
38
|
}
|
|
42
39
|
}
|
|
43
40
|
.jkl-system-message__message {
|
|
44
|
-
font-size: var(--jkl-font-size-3);
|
|
45
|
-
line-height: var(--jkl-line-height-tight);
|
|
46
|
-
font-weight: 400;
|
|
47
|
-
--jkl-icon-weight: 300;
|
|
48
41
|
margin: var(--jkl-system-message-message-margin);
|
|
49
42
|
}
|
|
50
43
|
.jkl-system-message__dismiss-button {
|
|
@@ -54,8 +47,6 @@
|
|
|
54
47
|
display: grid;
|
|
55
48
|
place-content: center;
|
|
56
49
|
position: relative;
|
|
57
|
-
flex-shrink: 0;
|
|
58
|
-
margin-top: 0.1875rem;
|
|
59
50
|
color: inherit;
|
|
60
51
|
}
|
|
61
52
|
.jkl-system-message__dismiss-button::after {
|
|
@@ -126,7 +117,7 @@
|
|
|
126
117
|
margin-bottom: 0;
|
|
127
118
|
}
|
|
128
119
|
.jkl-system-message--dismissed {
|
|
129
|
-
animation: jkl-dismiss-
|
|
120
|
+
animation: jkl-dismiss-usgzp54 400ms forwards;
|
|
130
121
|
transition: block 400ms 400ms;
|
|
131
122
|
}
|
|
132
123
|
.jkl-system-message--info {
|
|
@@ -156,7 +147,7 @@
|
|
|
156
147
|
border-width: 4px;
|
|
157
148
|
}
|
|
158
149
|
}
|
|
159
|
-
@keyframes jkl-dismiss-
|
|
150
|
+
@keyframes jkl-dismiss-usgzp54 {
|
|
160
151
|
from {
|
|
161
152
|
opacity: 1;
|
|
162
153
|
transform: translateY(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer jokul.components{.jkl-system-message{--jkl-system-message-
|
|
1
|
+
@layer jokul.components{.jkl-system-message{--jkl-system-message-content-padding:var(--jkl-unit-30);--jkl-system-message-dismiss-button-size:var(--jkl-unit-40);--jkl-system-message-dismiss-button-margin:-0.40625rem -1.125rem -0.40625rem auto;--jkl-system-message-message-margin:0 var(--jkl-spacing-20);--background-color:var(--jkl-color-background-alert-neutral);--text-color:var(--jkl-color-text-on-alert);background-color:var(--background-color);box-sizing:border-box;color:var(--text-color);transition-behavior:allow-discrete;width:100%}.jkl-system-message__content{font-size:var(--jkl-font-size-3);font-weight:400;line-height:var(--jkl-line-height-tight);--jkl-icon-weight:300;align-items:start;box-sizing:border-box;display:grid;grid-template-columns:-webkit-min-content 1fr -webkit-min-content;grid-template-columns:min-content 1fr min-content;margin:0 auto;padding:var(--jkl-system-message-content-padding);width:100%}@media screen and (forced-colors:active){.jkl-system-message__icon,.jkl-system-message__icon path,.jkl-system-message__icon svg{stroke:CanvasText}}.jkl-system-message__message{margin:var(--jkl-system-message-message-margin)}.jkl-system-message__dismiss-button{background-color:transparent;color:inherit;cursor:pointer;display:grid;padding:0;place-content:center;position:relative}.jkl-system-message__dismiss-button:after{content:"";display:block;height:var(--jkl-system-message-dismiss-button-size);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--jkl-system-message-dismiss-button-size)}@media screen and (forced-colors:active){.jkl-system-message__dismiss-button,.jkl-system-message__dismiss-button path,.jkl-system-message__dismiss-button svg{stroke:ButtonText}.jkl-system-message__dismiss-button{background-color:ButtonFace}}.jkl-system-message__dismiss-button{border-style:none;outline:0;outline-style:none}.jkl-system-message__dismiss-button:active,.jkl-system-message__dismiss-button:focus,.jkl-system-message__dismiss-button:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-system-message__dismiss-button{border-style:revert;outline:revert;outline-style:revert}.jkl-system-message__dismiss-button:active,.jkl-system-message__dismiss-button:focus,.jkl-system-message__dismiss-button:hover{outline:revert;outline-style:revert}}.jkl-system-message__dismiss-button:hover{color:var(--jkl-color-text-interactive-hover)}@media screen and (forced-colors:active){.jkl-system-message__dismiss-button:hover{stroke:ButtonText}.jkl-system-message__dismiss-button:hover path,.jkl-system-message__dismiss-button:hover svg{stroke:ButtonText}}.jkl-system-message__dismiss-button:focus-visible{outline:3px solid var(--jkl-color-border-action);outline-offset:3px}@media screen and (forced-colors:active){.jkl-system-message__dismiss-button:focus-visible{outline:2px solid ButtonText;outline-offset:2px}}.jkl-system-message__message,.jkl-system-message__message:last-child{margin-bottom:0}.jkl-system-message--dismissed{animation:jkl-dismiss-usgzp54 .4s forwards;transition:block .4s .4s}.jkl-system-message--info{--background-color:var(--jkl-color-background-alert-info)}.jkl-system-message--warning{--background-color:var(--jkl-color-background-alert-warning)}.jkl-system-message--error{--background-color:var(--jkl-color-background-alert-error)}.jkl-system-message--success{--background-color:var(--jkl-color-background-alert-success)}@media screen and (forced-colors:active){.jkl-system-message{border:2px solid CanvasText}.jkl-system-message--info{border-style:dotted}.jkl-system-message--warning{border-style:dashed}.jkl-system-message--error{border-style:double;border-width:4px}}@keyframes jkl-dismiss-usgzp54{0%{display:block;filter:saturate(1);opacity:1;transform:translateY(0)}to{display:none;filter:saturate(.7);opacity:0;transform:translateY(-10%)}}}
|
|
@@ -8,8 +8,6 @@ $_dismiss-animation-duration: jkl.timing("lazy");
|
|
|
8
8
|
|
|
9
9
|
@layer jokul.components {
|
|
10
10
|
.jkl-system-message {
|
|
11
|
-
--jkl-system-message-icon-height: var(--jkl-unit-30);
|
|
12
|
-
--jkl-system-message-icon-padding: #{jkl.rem(3px)} 0 0 0;
|
|
13
11
|
--jkl-system-message-content-padding: var(--jkl-unit-30);
|
|
14
12
|
--jkl-system-message-dismiss-button-size: var(--jkl-unit-40);
|
|
15
13
|
--jkl-system-message-dismiss-button-margin: -#{jkl.rem(
|
|
@@ -27,25 +25,21 @@ $_dismiss-animation-duration: jkl.timing("lazy");
|
|
|
27
25
|
box-sizing: border-box;
|
|
28
26
|
|
|
29
27
|
&__content {
|
|
28
|
+
@include jkl.text-style("text-medium");
|
|
30
29
|
box-sizing: border-box;
|
|
31
30
|
padding: var(--jkl-system-message-content-padding);
|
|
32
31
|
display: grid;
|
|
33
32
|
grid-template-columns: min-content 1fr min-content;
|
|
34
|
-
align-items:
|
|
33
|
+
align-items: start;
|
|
35
34
|
width: 100%;
|
|
36
35
|
margin: 0 auto;
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
&__icon {
|
|
40
|
-
height: var(--jkl-system-message-icon-height);
|
|
41
|
-
margin: var(--jkl-system-message-icon-padding);
|
|
42
|
-
flex-shrink: 0;
|
|
43
|
-
|
|
44
39
|
@include jkl.forced-colors-svg-fallback($stroke: CanvasText);
|
|
45
40
|
}
|
|
46
41
|
|
|
47
42
|
&__message {
|
|
48
|
-
@include jkl.text-style("text-medium");
|
|
49
43
|
margin: var(--jkl-system-message-message-margin);
|
|
50
44
|
}
|
|
51
45
|
|
|
@@ -56,8 +50,6 @@ $_dismiss-animation-duration: jkl.timing("lazy");
|
|
|
56
50
|
display: grid;
|
|
57
51
|
place-content: center;
|
|
58
52
|
position: relative;
|
|
59
|
-
flex-shrink: 0;
|
|
60
|
-
margin-top: jkl.rem(3px); // visual alignment with text
|
|
61
53
|
color: inherit;
|
|
62
54
|
|
|
63
55
|
// Sørg for å ha en stor nok touch target.
|
|
@@ -135,12 +135,12 @@
|
|
|
135
135
|
}
|
|
136
136
|
.jkl-toast[data-animation=entering],
|
|
137
137
|
.jkl-toast[data-animation=queued] {
|
|
138
|
-
animation: jkl-entering-
|
|
138
|
+
animation: jkl-entering-u19c75a 200ms ease-out forwards;
|
|
139
139
|
}
|
|
140
140
|
.jkl-toast[data-animation=exiting] {
|
|
141
|
-
animation: jkl-exiting-
|
|
141
|
+
animation: jkl-exiting-u19c75h 150ms ease-in forwards;
|
|
142
142
|
}
|
|
143
|
-
@keyframes jkl-entering-
|
|
143
|
+
@keyframes jkl-entering-u19c75a {
|
|
144
144
|
from {
|
|
145
145
|
opacity: 0;
|
|
146
146
|
transform: translate3d(0, 50%, 0);
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
transform: translate3d(0, 0, 0);
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
|
-
@keyframes jkl-exiting-
|
|
153
|
+
@keyframes jkl-exiting-u19c75h {
|
|
154
154
|
from {
|
|
155
155
|
opacity: 1;
|
|
156
156
|
transform: translate3d(0, 0, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer jokul.components{.jkl-toast-region{background:transparent;bottom:var(--jkl-unit-30);display:flex;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;width:100%;z-index:10000}.jkl-toast-region__toasts{align-items:center;display:flex;flex-direction:column;gap:var(--jkl-unit-20);min-width:18rem;pointer-events:auto}.jkl-toast-region--left{justify-content:flex-start;left:var(--jkl-unit-30)}.jkl-toast{--background-color:var(--jkl-color-background-container-high);--text-color:var(--jkl-color-text-default);--jkl-toast-padding:var(--jkl-unit-20);align-items:start;background-color:var(--background-color);border-radius:4px;box-sizing:border-box;color:var(--text-color);font-size:var(--jkl-font-size-3);font-weight:400;line-height:var(--jkl-line-height-relaxed);overflow:hidden;padding:var(--jkl-toast-padding);position:relative;width:clamp(15em,100%,min(30rem,85vw));--jkl-icon-weight:300}.jkl-toast__progress{--bar-color:var(--text-color);--track-color:transparent;border-radius:0;inset:0 0 auto;position:absolute}@media screen and (forced-colors:active){.jkl-toast__icon,.jkl-toast__icon path,.jkl-toast__icon svg{stroke:CanvasText}}.jkl-toast:not(:has(.jkl-toast__title)) .jkl-toast__icon{-webkit-margin-before:.0625rem;margin-block-start:.0625rem}.jkl-toast:has(.jkl-toast__title) .jkl-toast__icon{-webkit-margin-before:0;margin-block-start:0}.jkl-toast__content{flex-basis:100vw;flex-grow:1}.jkl-toast__action{margin-top:var(--jkl-unit-15)}.jkl-toast__title{font-size:var(--jkl-font-size-4);font-weight:700;line-height:var(--jkl-line-height-tight);--jkl-icon-weight:400}.jkl-toast__dismiss-button{background-color:transparent;color:inherit;cursor:pointer;padding:0}@media screen and (forced-colors:active){.jkl-toast__dismiss-button,.jkl-toast__dismiss-button path,.jkl-toast__dismiss-button svg{stroke:ButtonText}.jkl-toast__dismiss-button{background-color:ButtonFace}}.jkl-toast__dismiss-button:after{--tap-size:44px;content:"";inset:calc((var(--tap-size) - 100%)/2*-1);position:absolute}.jkl-toast--error,.jkl-toast--info,.jkl-toast--success,.jkl-toast--warning{--text-color:var(--jkl-color-text-on-alert)}.jkl-toast--info{--background-color:var(--jkl-color-background-alert-info)}.jkl-toast--warning{--background-color:var(--jkl-color-background-alert-warning)}.jkl-toast--error{--background-color:var(--jkl-color-background-alert-error)}.jkl-toast--success{--background-color:var(--jkl-color-background-alert-success)}@media screen and (forced-colors:active){.jkl-toast{border:2px solid CanvasText}.jkl-toast--info{border-style:dotted}.jkl-toast--warning{border-style:dashed}.jkl-toast--error{border-style:double;border-width:4px}}.jkl-toast[data-animation=entering],.jkl-toast[data-animation=queued]{animation:jkl-entering-
|
|
1
|
+
@layer jokul.components{.jkl-toast-region{background:transparent;bottom:var(--jkl-unit-30);display:flex;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;width:100%;z-index:10000}.jkl-toast-region__toasts{align-items:center;display:flex;flex-direction:column;gap:var(--jkl-unit-20);min-width:18rem;pointer-events:auto}.jkl-toast-region--left{justify-content:flex-start;left:var(--jkl-unit-30)}.jkl-toast{--background-color:var(--jkl-color-background-container-high);--text-color:var(--jkl-color-text-default);--jkl-toast-padding:var(--jkl-unit-20);align-items:start;background-color:var(--background-color);border-radius:4px;box-sizing:border-box;color:var(--text-color);font-size:var(--jkl-font-size-3);font-weight:400;line-height:var(--jkl-line-height-relaxed);overflow:hidden;padding:var(--jkl-toast-padding);position:relative;width:clamp(15em,100%,min(30rem,85vw));--jkl-icon-weight:300}.jkl-toast__progress{--bar-color:var(--text-color);--track-color:transparent;border-radius:0;inset:0 0 auto;position:absolute}@media screen and (forced-colors:active){.jkl-toast__icon,.jkl-toast__icon path,.jkl-toast__icon svg{stroke:CanvasText}}.jkl-toast:not(:has(.jkl-toast__title)) .jkl-toast__icon{-webkit-margin-before:.0625rem;margin-block-start:.0625rem}.jkl-toast:has(.jkl-toast__title) .jkl-toast__icon{-webkit-margin-before:0;margin-block-start:0}.jkl-toast__content{flex-basis:100vw;flex-grow:1}.jkl-toast__action{margin-top:var(--jkl-unit-15)}.jkl-toast__title{font-size:var(--jkl-font-size-4);font-weight:700;line-height:var(--jkl-line-height-tight);--jkl-icon-weight:400}.jkl-toast__dismiss-button{background-color:transparent;color:inherit;cursor:pointer;padding:0}@media screen and (forced-colors:active){.jkl-toast__dismiss-button,.jkl-toast__dismiss-button path,.jkl-toast__dismiss-button svg{stroke:ButtonText}.jkl-toast__dismiss-button{background-color:ButtonFace}}.jkl-toast__dismiss-button:after{--tap-size:44px;content:"";inset:calc((var(--tap-size) - 100%)/2*-1);position:absolute}.jkl-toast--error,.jkl-toast--info,.jkl-toast--success,.jkl-toast--warning{--text-color:var(--jkl-color-text-on-alert)}.jkl-toast--info{--background-color:var(--jkl-color-background-alert-info)}.jkl-toast--warning{--background-color:var(--jkl-color-background-alert-warning)}.jkl-toast--error{--background-color:var(--jkl-color-background-alert-error)}.jkl-toast--success{--background-color:var(--jkl-color-background-alert-success)}@media screen and (forced-colors:active){.jkl-toast{border:2px solid CanvasText}.jkl-toast--info{border-style:dotted}.jkl-toast--warning{border-style:dashed}.jkl-toast--error{border-style:double;border-width:4px}}.jkl-toast[data-animation=entering],.jkl-toast[data-animation=queued]{animation:jkl-entering-u19c75a .2s ease-out forwards}.jkl-toast[data-animation=exiting]{animation:jkl-exiting-u19c75h .15s ease-in forwards}@keyframes jkl-entering-u19c75a{0%{opacity:0;transform:translate3d(0,50%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes jkl-exiting-u19c75h{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,50%,0)}}}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Do not edit directly, this file was auto-generated.
|
|
3
|
+
*/
|
|
4
|
+
@layer jokul.components {
|
|
5
|
+
:where(.jkl-text) {
|
|
6
|
+
font-weight: var(--jkl-typography-weight-normal);
|
|
7
|
+
line-height: var(--jkl-line-height-relaxed);
|
|
8
|
+
}
|
|
9
|
+
.jkl-text[data-text-size] {
|
|
10
|
+
margin-block: 0;
|
|
11
|
+
}
|
|
12
|
+
.jkl-text[data-text-size=xs] {
|
|
13
|
+
font-size: var(--jkl-font-size-1);
|
|
14
|
+
line-height: var(--jkl-line-height-tight);
|
|
15
|
+
font-weight: 400;
|
|
16
|
+
--jkl-icon-weight: 300;
|
|
17
|
+
}
|
|
18
|
+
.jkl-text[data-text-size=s] {
|
|
19
|
+
font-size: var(--jkl-font-size-2);
|
|
20
|
+
line-height: var(--jkl-line-height-relaxed);
|
|
21
|
+
font-weight: 400;
|
|
22
|
+
--jkl-icon-weight: 300;
|
|
23
|
+
--jkl-icon-size: 1.2em;
|
|
24
|
+
}
|
|
25
|
+
.jkl-text[data-text-size=m] {
|
|
26
|
+
font-size: var(--jkl-font-size-3);
|
|
27
|
+
line-height: var(--jkl-line-height-relaxed);
|
|
28
|
+
font-weight: 400;
|
|
29
|
+
--jkl-icon-weight: 300;
|
|
30
|
+
}
|
|
31
|
+
.jkl-text[data-text-size=l] {
|
|
32
|
+
font-size: var(--jkl-font-size-5);
|
|
33
|
+
line-height: var(--jkl-line-height-relaxed);
|
|
34
|
+
font-weight: 400;
|
|
35
|
+
--jkl-icon-weight: 300;
|
|
36
|
+
}
|
|
37
|
+
.jkl-text[data-bold],
|
|
38
|
+
strong.jkl-text[data-text-size] {
|
|
39
|
+
font-weight: var(--jkl-typography-weight-bold);
|
|
40
|
+
--jkl-icon-weight: 400;
|
|
41
|
+
}
|
|
42
|
+
.jkl-text[data-short] {
|
|
43
|
+
line-height: var(--jkl-line-height-tight);
|
|
44
|
+
}
|
|
45
|
+
:is(code, kbd, samp, var).jkl-text {
|
|
46
|
+
font-family: "Fremtind Grotesk Mono", "Adjusted Courier New Fallback", -apple-system, BlinkMacSystemFont, monospace;
|
|
47
|
+
}
|
|
48
|
+
label.jkl-text {
|
|
49
|
+
display: block;
|
|
50
|
+
margin-block-end: var(--jkl-spacing-8);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer jokul.components{:where(.jkl-text){font-weight:var(--jkl-typography-weight-normal);line-height:var(--jkl-line-height-relaxed)}.jkl-text[data-text-size]{margin-block:0}.jkl-text[data-text-size=xs]{font-size:var(--jkl-font-size-1);font-weight:400;line-height:var(--jkl-line-height-tight);--jkl-icon-weight:300}.jkl-text[data-text-size=s]{font-size:var(--jkl-font-size-2);font-weight:400;line-height:var(--jkl-line-height-relaxed);--jkl-icon-weight:300;--jkl-icon-size:1.2em}.jkl-text[data-text-size=m]{font-size:var(--jkl-font-size-3);font-weight:400;line-height:var(--jkl-line-height-relaxed);--jkl-icon-weight:300}.jkl-text[data-text-size=l]{font-size:var(--jkl-font-size-5);font-weight:400;line-height:var(--jkl-line-height-relaxed);--jkl-icon-weight:300}.jkl-text[data-bold],strong.jkl-text[data-text-size]{font-weight:var(--jkl-typography-weight-bold);--jkl-icon-weight:400}.jkl-text[data-short]{line-height:var(--jkl-line-height-tight)}:is(code,kbd,samp,var).jkl-text{font-family:Fremtind Grotesk Mono,Adjusted Courier New Fallback,-apple-system,BlinkMacSystemFont,monospace}label.jkl-text{display:block;-webkit-margin-after:var(--jkl-spacing-8);margin-block-end:var(--jkl-spacing-8)}}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
@use "../../core/jkl";
|
|
2
|
+
|
|
3
|
+
// Hver `size` mapper til en komplett tekst-stil fra `$text-styles` i
|
|
4
|
+
// `core/jkl/_typography.scss` — både font-size, line-height, font-weight
|
|
5
|
+
// og ikon-variabler settes via `jkl.text-style`-mixinen.
|
|
6
|
+
$_size-styles: (
|
|
7
|
+
"xs": "text-micro",
|
|
8
|
+
"s": "paragraph-small",
|
|
9
|
+
"m": "paragraph-medium",
|
|
10
|
+
"l": "paragraph-large",
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
@layer jokul.components {
|
|
14
|
+
:where(.jkl-text) {
|
|
15
|
+
font-weight: var(--jkl-typography-weight-normal);
|
|
16
|
+
line-height: var(--jkl-line-height-relaxed);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Scope margin-resetten til komponenten via `data-text-size` så vi ikke
|
|
20
|
+
// overstyrer margin på elementer som bare bruker `.jkl-text` som
|
|
21
|
+
// hjelpeklasse.
|
|
22
|
+
.jkl-text[data-text-size] {
|
|
23
|
+
margin-block: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@each $name, $style in $_size-styles {
|
|
27
|
+
.jkl-text[data-text-size="#{$name}"] {
|
|
28
|
+
@include jkl.text-style($style);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// `bold` og `<strong>` skal sette både font-weight og ikon-weight
|
|
33
|
+
// (samme mønster som `.jkl-bold` og `.jkl strong`). Spesifisiteten må
|
|
34
|
+
// være lik eller høyere enn `.jkl-text[data-text-size="…"]` som ellers
|
|
35
|
+
// tvinger normal weight via `jkl.text-style`-mixinen.
|
|
36
|
+
.jkl-text[data-bold],
|
|
37
|
+
strong.jkl-text[data-text-size] {
|
|
38
|
+
font-weight: var(--jkl-typography-weight-bold);
|
|
39
|
+
--jkl-icon-weight: #{jkl.$icon-weight-bold};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.jkl-text[data-short] {
|
|
43
|
+
line-height: var(--jkl-line-height-tight);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:is(code, kbd, samp, var).jkl-text {
|
|
47
|
+
@include jkl.use-font-family("Fremtind Grotesk Mono");
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Labels er blokk-nivå og har bunnmarg til feltet de beskriver.
|
|
51
|
+
label.jkl-text {
|
|
52
|
+
display: block;
|
|
53
|
+
margin-block-end: var(--jkl-spacing-8);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Do not edit directly, this file was auto-generated.
|
|
3
|
+
*/
|
|
4
|
+
@layer jokul.components {
|
|
5
|
+
:where(.jkl-title) {
|
|
6
|
+
font-weight: var(--jkl-typography-weight-normal);
|
|
7
|
+
line-height: var(--jkl-line-height-tight);
|
|
8
|
+
}
|
|
9
|
+
.jkl-title[data-text-size] {
|
|
10
|
+
margin-block: 0;
|
|
11
|
+
}
|
|
12
|
+
.jkl-title[data-text-size=xs],
|
|
13
|
+
.jkl-heading-xs {
|
|
14
|
+
font-size: var(--jkl-font-size-4);
|
|
15
|
+
line-height: var(--jkl-line-height-tight);
|
|
16
|
+
font-weight: 700;
|
|
17
|
+
--jkl-icon-weight: 400;
|
|
18
|
+
}
|
|
19
|
+
:where(.jkl-heading-xs) {
|
|
20
|
+
margin-block: 0;
|
|
21
|
+
}
|
|
22
|
+
.jkl-title[data-text-size=s],
|
|
23
|
+
.jkl-heading-s {
|
|
24
|
+
font-size: var(--jkl-font-size-5);
|
|
25
|
+
line-height: var(--jkl-line-height-tight);
|
|
26
|
+
font-weight: 700;
|
|
27
|
+
--jkl-icon-weight: 400;
|
|
28
|
+
}
|
|
29
|
+
:where(.jkl-heading-s) {
|
|
30
|
+
margin-block: 0;
|
|
31
|
+
}
|
|
32
|
+
.jkl-title[data-text-size=m],
|
|
33
|
+
.jkl-heading-m {
|
|
34
|
+
font-size: var(--jkl-font-size-6);
|
|
35
|
+
line-height: var(--jkl-line-height-tight);
|
|
36
|
+
font-weight: 700;
|
|
37
|
+
--jkl-icon-weight: 400;
|
|
38
|
+
}
|
|
39
|
+
:where(.jkl-heading-m) {
|
|
40
|
+
margin-block: 0;
|
|
41
|
+
}
|
|
42
|
+
.jkl-title[data-text-size=l],
|
|
43
|
+
.jkl-heading-l {
|
|
44
|
+
font-size: var(--jkl-font-size-7);
|
|
45
|
+
line-height: var(--jkl-line-height-tight);
|
|
46
|
+
font-weight: 400;
|
|
47
|
+
--jkl-icon-weight: 300;
|
|
48
|
+
}
|
|
49
|
+
:where(.jkl-heading-l) {
|
|
50
|
+
margin-block: 0;
|
|
51
|
+
}
|
|
52
|
+
.jkl-title[data-text-size=xl],
|
|
53
|
+
.jkl-heading-xl {
|
|
54
|
+
font-size: var(--jkl-font-size-8);
|
|
55
|
+
line-height: var(--jkl-line-height-tight);
|
|
56
|
+
font-weight: 400;
|
|
57
|
+
--jkl-icon-weight: 300;
|
|
58
|
+
}
|
|
59
|
+
:where(.jkl-heading-xl) {
|
|
60
|
+
margin-block: 0;
|
|
61
|
+
}
|
|
62
|
+
:is(label, legend).jkl-title[data-text-size] {
|
|
63
|
+
font-weight: var(--jkl-typography-weight-normal);
|
|
64
|
+
line-height: var(--jkl-line-height-relaxed);
|
|
65
|
+
}
|
|
66
|
+
label.jkl-title[data-text-size] {
|
|
67
|
+
display: block;
|
|
68
|
+
margin-block-end: var(--jkl-spacing-8);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer jokul.components{:where(.jkl-title){font-weight:var(--jkl-typography-weight-normal);line-height:var(--jkl-line-height-tight)}.jkl-title[data-text-size]{margin-block:0}.jkl-heading-xs,.jkl-title[data-text-size=xs]{font-size:var(--jkl-font-size-4);font-weight:700;line-height:var(--jkl-line-height-tight);--jkl-icon-weight:400}:where(.jkl-heading-xs){margin-block:0}.jkl-heading-s,.jkl-title[data-text-size=s]{font-size:var(--jkl-font-size-5);font-weight:700;line-height:var(--jkl-line-height-tight);--jkl-icon-weight:400}:where(.jkl-heading-s){margin-block:0}.jkl-heading-m,.jkl-title[data-text-size=m]{font-size:var(--jkl-font-size-6);font-weight:700;line-height:var(--jkl-line-height-tight);--jkl-icon-weight:400}:where(.jkl-heading-m){margin-block:0}.jkl-heading-l,.jkl-title[data-text-size=l]{font-size:var(--jkl-font-size-7);font-weight:400;line-height:var(--jkl-line-height-tight);--jkl-icon-weight:300}:where(.jkl-heading-l){margin-block:0}.jkl-heading-xl,.jkl-title[data-text-size=xl]{font-size:var(--jkl-font-size-8);font-weight:400;line-height:var(--jkl-line-height-tight);--jkl-icon-weight:300}:where(.jkl-heading-xl){margin-block:0}:is(label,legend).jkl-title[data-text-size]{font-weight:var(--jkl-typography-weight-normal);line-height:var(--jkl-line-height-relaxed)}label.jkl-title[data-text-size]{display:block;-webkit-margin-after:var(--jkl-spacing-8);margin-block-end:var(--jkl-spacing-8)}}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
@use "../../core/jkl";
|
|
2
|
+
|
|
3
|
+
// Hver `size` mapper til en komplett tekst-stil fra `$text-styles` i
|
|
4
|
+
// `core/jkl/_typography.scss` — både font-size, line-height, font-weight
|
|
5
|
+
// og ikon-variabler settes via `jkl.text-style`-mixinen.
|
|
6
|
+
$_size-styles: (
|
|
7
|
+
"xs": "heading-5",
|
|
8
|
+
"s": "heading-4",
|
|
9
|
+
"m": "heading-3",
|
|
10
|
+
"l": "heading-2",
|
|
11
|
+
"xl": "heading-1",
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
@layer jokul.components {
|
|
15
|
+
:where(.jkl-title) {
|
|
16
|
+
font-weight: var(--jkl-typography-weight-normal);
|
|
17
|
+
line-height: var(--jkl-line-height-tight);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Scope margin-resetten til komponenten via `data-text-size` så vi ikke
|
|
21
|
+
// overstyrer margin på elementer som bare bruker `.jkl-title` som
|
|
22
|
+
// hjelpeklasse.
|
|
23
|
+
.jkl-title[data-text-size] {
|
|
24
|
+
margin-block: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Genererer både komponent-regler og ekvivalente hjelpeklasser fra
|
|
28
|
+
// samme kilde slik at de ikke drifter fra hverandre.
|
|
29
|
+
// `.jkl-heading-<size>` tilsvarer `<Title size="<size>">` brukt på et
|
|
30
|
+
// vilkårlig element.
|
|
31
|
+
@each $name, $style in $_size-styles {
|
|
32
|
+
.jkl-title[data-text-size="#{$name}"],
|
|
33
|
+
.jkl-heading-#{$name} {
|
|
34
|
+
@include jkl.text-style($style);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:where(.jkl-heading-#{$name}) {
|
|
38
|
+
margin-block: 0;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Skjema-elementer skal ikke arve heading sine fete font-weight og
|
|
43
|
+
// tight line-height. De er tekst som beskriver et skjemafelt eller en
|
|
44
|
+
// gruppe, ikke strukturelle overskrifter. Spesifisiteten må matche
|
|
45
|
+
// `.jkl-title[data-text-size="…"]` (0,2,0) for å overstyre den.
|
|
46
|
+
:is(label, legend).jkl-title[data-text-size] {
|
|
47
|
+
font-weight: var(--jkl-typography-weight-normal);
|
|
48
|
+
line-height: var(--jkl-line-height-relaxed);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Labels er blokk-nivå og har bunnmarg til feltet de beskriver.
|
|
52
|
+
// Spesifisiteten her (0,2,1) overstyrer `.jkl-title[data-text-size]`
|
|
53
|
+
// som ellers nullstiller margin via `margin-block: 0`.
|
|
54
|
+
label.jkl-title[data-text-size] {
|
|
55
|
+
display: block;
|
|
56
|
+
margin-block-end: var(--jkl-spacing-8);
|
|
57
|
+
}
|
|
58
|
+
}
|
package/styles/core/core.css
CHANGED