@oslokommune/punkt-css 0.18.2

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 (77) hide show
  1. package/CHANGELOG.md +260 -0
  2. package/CONTRIBUTING.md +116 -0
  3. package/LICENSE +23 -0
  4. package/README.md +221 -0
  5. package/dist/css/components/alert.css +111 -0
  6. package/dist/css/components/alert.min.css +1 -0
  7. package/dist/css/components/backlink.css +38 -0
  8. package/dist/css/components/backlink.min.css +1 -0
  9. package/dist/css/components/badge.css +52 -0
  10. package/dist/css/components/badge.min.css +1 -0
  11. package/dist/css/components/breadcrumbs.css +116 -0
  12. package/dist/css/components/breadcrumbs.min.css +1 -0
  13. package/dist/css/components/footer.css +48 -0
  14. package/dist/css/components/footer.min.css +1 -0
  15. package/dist/css/components/header.css +123 -0
  16. package/dist/css/components/header.min.css +1 -0
  17. package/dist/css/components/icon.css +63 -0
  18. package/dist/css/components/icon.min.css +1 -0
  19. package/dist/css/components/teaserlist.css +53 -0
  20. package/dist/css/components/teaserlist.min.css +1 -0
  21. package/dist/css/pkt-base.css +9721 -0
  22. package/dist/css/pkt-base.min.css +1 -0
  23. package/dist/css/pkt-components.css +611 -0
  24. package/dist/css/pkt-components.min.css +1 -0
  25. package/dist/css/pkt-elements.css +881 -0
  26. package/dist/css/pkt-elements.min.css +1 -0
  27. package/dist/css/pkt-normalise.css +221 -0
  28. package/dist/css/pkt-normalise.min.css +1 -0
  29. package/dist/css/pkt.css +11415 -0
  30. package/dist/css/pkt.min.css +1 -0
  31. package/dist/scss/abstracts/_index.scss +3 -0
  32. package/dist/scss/abstracts/functions/_index.scss +65 -0
  33. package/dist/scss/abstracts/mixins/_breakpoints.scss +60 -0
  34. package/dist/scss/abstracts/mixins/_index.scss +2 -0
  35. package/dist/scss/abstracts/mixins/_typography.scss +45 -0
  36. package/dist/scss/abstracts/placeholders/_index.scss +19 -0
  37. package/dist/scss/abstracts/variables/_breakpoints.scss +8 -0
  38. package/dist/scss/abstracts/variables/_colors.scss +55 -0
  39. package/dist/scss/abstracts/variables/_index.scss +24 -0
  40. package/dist/scss/abstracts/variables/_spacing.scss +22 -0
  41. package/dist/scss/abstracts/variables/_typography.scss +430 -0
  42. package/dist/scss/base/_accessibility.scss +11 -0
  43. package/dist/scss/base/_colors.scss +24 -0
  44. package/dist/scss/base/_containers.scss +75 -0
  45. package/dist/scss/base/_defaults.scss +48 -0
  46. package/dist/scss/base/_grid.scss +114 -0
  47. package/dist/scss/base/_index.scss +9 -0
  48. package/dist/scss/base/_oslo-sans.scss +21 -0
  49. package/dist/scss/base/_spacing.scss +109 -0
  50. package/dist/scss/base/_typography.scss +102 -0
  51. package/dist/scss/base/_visibility.scss +28 -0
  52. package/dist/scss/components/_alert.scss +153 -0
  53. package/dist/scss/components/_backlink.scss +50 -0
  54. package/dist/scss/components/_badge.scss +59 -0
  55. package/dist/scss/components/_breadcrumbs.scss +130 -0
  56. package/dist/scss/components/_footer.scss +52 -0
  57. package/dist/scss/components/_header.scss +125 -0
  58. package/dist/scss/components/_icon.scss +83 -0
  59. package/dist/scss/components/_index.scss +8 -0
  60. package/dist/scss/components/_teaserlist.scss +56 -0
  61. package/dist/scss/elements/_button.scss +412 -0
  62. package/dist/scss/elements/_form.scss +190 -0
  63. package/dist/scss/elements/_hr.scss +8 -0
  64. package/dist/scss/elements/_image.scss +32 -0
  65. package/dist/scss/elements/_index.scss +8 -0
  66. package/dist/scss/elements/_list.scss +104 -0
  67. package/dist/scss/elements/_section.scss +98 -0
  68. package/dist/scss/elements/_select.scss +82 -0
  69. package/dist/scss/elements/_table.scss +80 -0
  70. package/dist/scss/normalise/_index.scss +241 -0
  71. package/dist/scss/pkt-base.scss +4 -0
  72. package/dist/scss/pkt-components.scss +4 -0
  73. package/dist/scss/pkt-elements.scss +4 -0
  74. package/dist/scss/pkt-normalise.scss +4 -0
  75. package/dist/scss/pkt.scss +13 -0
  76. package/index.js +1 -0
  77. package/package.json +40 -0
@@ -0,0 +1,881 @@
1
+ @charset "UTF-8";
2
+ /*
3
+ * Accessibility
4
+ * https://kittygiraudel.com/2016/10/13/css-hide-and-seek/#undesirable-overflows-18012019
5
+ */
6
+ .pkt-btn--icon-only .pkt-btn__text {
7
+ border: 0 !important;
8
+ clip: rect(1px, 1px, 1px, 1px) !important;
9
+ -webkit-clip-path: inset(50%) !important;
10
+ clip-path: inset(50%) !important;
11
+ height: 1px !important;
12
+ overflow: hidden !important;
13
+ margin: -1px !important;
14
+ padding: 0 !important;
15
+ position: absolute !important;
16
+ width: 1px !important;
17
+ white-space: nowrap !important;
18
+ }
19
+
20
+ /* Button element!
21
+ *
22
+ * Size: small, medium, large
23
+ * Skin: primary, secondary, tertiary, flat, primary-confirm
24
+ * State: normal, focus, hover, active, disabled
25
+ * Variant: label-only, icon-left, icon-right, icon-only
26
+ * Mode: light, dark
27
+ */
28
+ .pkt-btn {
29
+ --btn-link-bg: var(--color-blue-dark);
30
+ --btn-link-bc: var(--color-blue-dark);
31
+ --btn-link-txt: var(--color-white);
32
+ --btn-focus-bg: var(--color-active);
33
+ --btn-focus-bc: var(--color-active);
34
+ --btn-focus-txt: var(--color-white);
35
+ --btn-hover-bg: var(--color-active);
36
+ --btn-hover-bc: var(--color-active);
37
+ --btn-hover-txt: var(--color-white);
38
+ --btn-active-bg: var(--color-active);
39
+ --btn-active-bc: var(--color-active);
40
+ --btn-active-txt: var(--color-white);
41
+ --btn-disabled-bg: var(--color-gray);
42
+ --btn-disabled-bc: var(--color-gray);
43
+ --btn-disabled-txt: var(--color-grayscale-30);
44
+ }
45
+
46
+ [data-mode=dark] .pkt-btn {
47
+ --btn-link-bg: var(--color-blue-light);
48
+ --btn-link-bc: var(--color-blue-light);
49
+ --btn-link-txt: var(--color-blue-dark);
50
+ --btn-focus-bg: var(--color-blue);
51
+ --btn-focus-bc: var(--color-blue);
52
+ --btn-focus-txt: var(--color-blue-dark);
53
+ --btn-hover-bg: var(--color-blue);
54
+ --btn-hover-bc: var(--color-blue);
55
+ --btn-hover-txt: var(--color-blue-dark);
56
+ --btn-active-bg: var(--color-blue);
57
+ --btn-active-bc: var(--color-blue);
58
+ --btn-active-txt: var(--color-blue-dark);
59
+ --btn-disabled-bg: var(--color-gray);
60
+ --btn-disabled-bc: var(--color-gray);
61
+ --btn-disabled-txt: var(--color-grayscale-30);
62
+ }
63
+
64
+ .pkt-btn--secondary {
65
+ --btn-link-bg: var(--color-transparent);
66
+ --btn-link-txt: var(--color-blue-dark);
67
+ --btn-focus-bg: var(--color-transparent);
68
+ --btn-focus-txt: var(--color-active);
69
+ --btn-hover-bg: var(--color-transparent);
70
+ --btn-hover-txt: var(--color-active);
71
+ }
72
+
73
+ [data-mode=dark] .pkt-btn--secondary {
74
+ --btn-link-bg: var(--color-transparent);
75
+ --btn-link-bc: var(--color-white);
76
+ --btn-link-txt: var(--color-white);
77
+ --btn-hover-bg: var(--color-transparent);
78
+ --btn-hover-txt: var(--color-blue);
79
+ }
80
+
81
+ .pkt-btn--tertiary {
82
+ --btn-link-bg: var(--color-transparent);
83
+ --btn-link-bc: var(--color-yellow);
84
+ --btn-link-txt: var(--color-blue-dark);
85
+ --btn-focus-bg: var(--color-transparent);
86
+ --btn-focus-txt: var(--color-active);
87
+ --btn-hover-bg: var(--color-transparent);
88
+ --btn-hover-txt: var(--color-active);
89
+ }
90
+
91
+ [data-mode=dark] .pkt-btn--tertiary {
92
+ --btn-link-bg: var(--color-transparent);
93
+ --btn-link-bc: var(--color-yellow);
94
+ --btn-link-txt: var(--color-white);
95
+ --btn-focus-bg: var(--color-transparent);
96
+ --btn-focus-txt: var(--color-blue);
97
+ --btn-hover-bg: var(--color-transparent);
98
+ --btn-hover-txt: var(--color-blue);
99
+ }
100
+
101
+ .pkt-btn--flat {
102
+ --btn-link-bg: var(--color-transparent);
103
+ --btn-link-bc: var(--color-transparent);
104
+ --btn-link-txt: var(--color-blue-dark);
105
+ --btn-focus-bg: var(--color-gray);
106
+ --btn-focus-bc: var(--color-gray);
107
+ --btn-focus-txt: var(--color-active);
108
+ --btn-hover-bg: var(--color-gray);
109
+ --btn-hover-bc: var(--color-gray);
110
+ --btn-hover-txt: var(--color-active);
111
+ --btn-active-bg: var(--color-transparent);
112
+ --btn-active-bc: var(--color-transparent);
113
+ --btn-active-txt: var(--color-active);
114
+ --btn-disabled-bg: var(--color-transparent);
115
+ --btn-disabled-bc: var(--color-transparent);
116
+ }
117
+
118
+ [data-mode=dark] .pkt-btn--flat {
119
+ --btn-link-bg: var(--color-transparent);
120
+ --btn-link-bc: var(--color-transparent);
121
+ --btn-link-txt: var(--color-white);
122
+ --btn-focus-bg: var(--color-blue-5);
123
+ --btn-focus-bc: var(--color-blue-5);
124
+ --btn-focus-txt: var(--color-blue);
125
+ --btn-hover-bg: var(--color-blue-5);
126
+ --btn-hover-bc: var(--color-blue-5);
127
+ --btn-hover-txt: var(--color-blue);
128
+ --btn-active-bg: var(--color-transparent);
129
+ --btn-active-bc: var(--color-transparent);
130
+ --btn-active-txt: var(--color-blue);
131
+ --btn-disabled-bg: var(--color-transparent);
132
+ --btn-disabled-bc: var(--color-transparent);
133
+ --btn-disabled-txt: var(--color-white);
134
+ }
135
+
136
+ .pkt-btn--primary-confirm {
137
+ --btn-link-bg: var(--color-green);
138
+ --btn-link-bc: var(--color-green);
139
+ --btn-link-txt: var(--color-blue-dark);
140
+ }
141
+
142
+ [data-mode=dark] .pkt-btn--primary-confirm {
143
+ --btn-link-bg: var(--color-green);
144
+ --btn-link-bc: var(--color-green);
145
+ }
146
+
147
+ .pkt-btn {
148
+ border-radius: 0;
149
+ cursor: pointer;
150
+ display: inline-flex;
151
+ font-family: inherit;
152
+ font-weight: normal;
153
+ margin: 0;
154
+ overflow: hidden;
155
+ position: relative;
156
+ -moz-user-select: none;
157
+ -webkit-user-select: none;
158
+ -ms-user-select: none;
159
+ user-select: none;
160
+ vertical-align: top;
161
+ background-color: var(--btn-link-bg);
162
+ border: 2px solid var(--btn-link-bc);
163
+ color: var(--btn-link-txt);
164
+ text-decoration: none;
165
+ text-decoration-thickness: 1px;
166
+ text-underline-offset: 0.3em;
167
+ text-align: left;
168
+ font-size: 1.125rem;
169
+ line-height: 1.5em;
170
+ padding: 0.625rem 0.9375rem;
171
+ }
172
+ .pkt-btn[class*=pkt-btn--icon] > .pkt-btn__icon {
173
+ display: block;
174
+ }
175
+ .pkt-btn__icon {
176
+ --fg-color: currentColor;
177
+ display: none;
178
+ flex-shrink: 0;
179
+ }
180
+ .pkt-btn:link, .pkt-btn:visited {
181
+ color: var(--btn-link-txt);
182
+ }
183
+ a.pkt-btn:focus, .pkt-btn:enabled:focus, .pkt-btn.pkt-btn--focus {
184
+ background-color: var(--btn-focus-bg);
185
+ border-color: var(--btn-focus-bc);
186
+ color: var(--btn-focus-txt);
187
+ outline: 0;
188
+ text-decoration: underline;
189
+ }
190
+
191
+ a.pkt-btn:hover, .pkt-btn:enabled:hover, .pkt-btn.pkt-btn--hover {
192
+ background-color: var(--btn-hover-bg);
193
+ border-color: var(--btn-hover-bc);
194
+ color: var(--btn-hover-txt);
195
+ outline: 0;
196
+ text-decoration: underline;
197
+ }
198
+
199
+ a.pkt-btn:active, .pkt-btn:enabled:active, .pkt-btn.pkt-btn--active, .pkt-btn.pkt-btn--active:hover {
200
+ background-color: var(--btn-active-bg);
201
+ border-color: var(--btn-active-bc);
202
+ color: var(--btn-active-txt);
203
+ outline: 0;
204
+ text-decoration: none;
205
+ }
206
+
207
+ .pkt-btn:disabled {
208
+ background-color: var(--btn-disabled-bg);
209
+ border-color: var(--btn-disabled-bc);
210
+ color: var(--btn-disabled-txt);
211
+ cursor: inherit;
212
+ }
213
+ .pkt-btn__icon {
214
+ height: 1.5rem;
215
+ width: 1.5rem;
216
+ }
217
+ .pkt-btn--label-only .pkt-btn__icon {
218
+ display: none;
219
+ }
220
+ .pkt-btn--icon-left {
221
+ flex-direction: row;
222
+ }
223
+ .pkt-btn--icon-left .pkt-btn__icon {
224
+ margin: 0.09375rem 0.3125rem 0 0;
225
+ }
226
+ .pkt-btn--icon-right {
227
+ flex-direction: row-reverse;
228
+ }
229
+ .pkt-btn--icon-right .pkt-btn__icon {
230
+ margin: 0.09375rem 0 0 0.3125rem;
231
+ }
232
+ .pkt-btn--icon-only .pkt-btn__icon {
233
+ margin: 0.09375rem -0.21875rem;
234
+ }
235
+ .pkt-btn--small {
236
+ font-size: 1rem;
237
+ line-height: 1.5em;
238
+ padding: 0.3125rem 0.625rem;
239
+ }
240
+ .pkt-btn--small .pkt-btn__icon {
241
+ height: 1.5rem;
242
+ width: 1.5rem;
243
+ }
244
+ .pkt-btn--small.pkt-btn--icon-left .pkt-btn__icon {
245
+ margin: 0 0.3125rem 0 0;
246
+ }
247
+ .pkt-btn--small.pkt-btn--icon-right .pkt-btn__icon {
248
+ margin: 0 0 0 0.3125rem;
249
+ }
250
+ .pkt-btn--small.pkt-btn--icon-only .pkt-btn__icon {
251
+ margin: 0 -0.3125rem;
252
+ }
253
+ .pkt-btn--large {
254
+ font-size: 1.5rem;
255
+ line-height: 1.4166666667em;
256
+ padding: 0.9375rem 1.25rem;
257
+ }
258
+ .pkt-btn--large .pkt-btn__icon {
259
+ height: 2rem;
260
+ width: 2rem;
261
+ }
262
+ .pkt-btn--large.pkt-btn--icon-left .pkt-btn__icon {
263
+ margin: 0.0625rem 0.625rem 0 0;
264
+ }
265
+ .pkt-btn--large.pkt-btn--icon-right .pkt-btn__icon {
266
+ margin: 0.0625rem 0 0 0.625rem;
267
+ }
268
+ .pkt-btn--large.pkt-btn--icon-only .pkt-btn__icon {
269
+ margin: 0.0625rem -0.25rem;
270
+ }
271
+ .pkt-btn::-moz-focus-inner {
272
+ border: 0;
273
+ }
274
+
275
+ /*
276
+ * Form elements
277
+ * https://css-tricks.com/html-inputs-and-labels-a-love-story/
278
+ *
279
+ */
280
+ /* TODO: move to animation.scss */
281
+ @keyframes enter {
282
+ from {
283
+ transform: scaleY(0);
284
+ }
285
+ to {
286
+ transform: scaleY(1);
287
+ }
288
+ }
289
+ /* TODO: Contemplate and decide if this should be split up to multiple files or not.
290
+ * button is only one without pkt-form prefix. Is that ok???
291
+ */
292
+ .pkt-form {
293
+ /* EXPLICIT LABEL (recommended for use)
294
+ * - the label is connected to an input via "for" and "id"
295
+ */
296
+ }
297
+ .pkt-form-group {
298
+ margin-bottom: 1.5rem;
299
+ }
300
+ .pkt-form-group:focus-within {
301
+ color: var(--color-active);
302
+ }
303
+ .pkt-form-label {
304
+ width: 100%;
305
+ }
306
+ .pkt-form-help {
307
+ margin: 0.25em 0;
308
+ font-size: 0.875rem;
309
+ line-height: 1.25em;
310
+ opacity: 0.9;
311
+ }
312
+ .pkt-form-validation {
313
+ animation: enter 0.2s ease-in forwards;
314
+ background-color: var(--color-red);
315
+ border: 2px solid var(--color-red);
316
+ font-size: 0.875rem;
317
+ line-height: 2rem;
318
+ margin: 1rem 0 0;
319
+ padding: 0.4375rem 0.5rem;
320
+ transform-origin: 0 0;
321
+ }
322
+ .pkt-form-validation--warning {
323
+ background-color: var(--color-yellow);
324
+ border-color: var(--color-yellow);
325
+ }
326
+ .pkt-form-validation--error {
327
+ background-color: var(--color-red);
328
+ border-color: var(--color-red);
329
+ }
330
+ .pkt-form-input, .pkt-form-textarea {
331
+ appearance: none;
332
+ background-clip: padding-box;
333
+ background-color: var(--color-white);
334
+ border: 2px solid var(--color-blue-dark);
335
+ border-radius: 0;
336
+ color: var(--color-blue-dark);
337
+ display: block;
338
+ font-size: 1rem;
339
+ font-weight: 400;
340
+ height: 3.125rem;
341
+ line-height: 2rem;
342
+ margin: 0;
343
+ padding: 0.4375rem 0.5rem;
344
+ position: relative;
345
+ width: 100%;
346
+ /* Placeholder
347
+ * 1. Override Firefox's default opacity
348
+ */
349
+ }
350
+ .pkt-form-input:focus, .pkt-form-textarea:focus {
351
+ background-color: var(--color-white);
352
+ border-color: var(--color-active);
353
+ box-shadow: 0 0 var(--color-active);
354
+ color: var(--color-active);
355
+ outline: 2px solid var(--color-active);
356
+ }
357
+ .pkt-form-input::placeholder, .pkt-form-textarea::placeholder {
358
+ color: var(--color-grayscale-30);
359
+ opacity: 1; /* 1 */
360
+ }
361
+ .pkt-form-input + .pkt-form-validation, .pkt-form-textarea + .pkt-form-validation {
362
+ display: none;
363
+ }
364
+ .pkt-form-input:not(:placeholder-shown):invalid, .pkt-form-textarea:not(:placeholder-shown):invalid {
365
+ border-color: var(--color-red);
366
+ }
367
+ .pkt-form-input:not(:placeholder-shown):invalid + .pkt-form-validation, .pkt-form-textarea:not(:placeholder-shown):invalid + .pkt-form-validation {
368
+ display: inherit;
369
+ }
370
+ .pkt-form-input:disabled, .pkt-form-input[readonly], .pkt-form-textarea:disabled, .pkt-form-textarea[readonly] {
371
+ background-color: var(--color-gray);
372
+ border-color: var(--color-grayscale-30);
373
+ color: var(--color-grayscale-30);
374
+ cursor: inherit;
375
+ }
376
+ .pkt-form-check-input {
377
+ appearance: none;
378
+ background-color: var(--color-white);
379
+ background-repeat: no-repeat;
380
+ background-position: center;
381
+ background-size: contain;
382
+ border: 2px solid var(--color-blue-dark);
383
+ display: inline-block;
384
+ margin: 0.125rem 0.25rem 0 0;
385
+ width: 1.25rem;
386
+ height: 1.25rem;
387
+ transition: all 0.3s ease-out;
388
+ vertical-align: top;
389
+ }
390
+ .pkt-form-check-input[type=checkbox] {
391
+ border-radius: 0;
392
+ }
393
+ .pkt-form-check-input[type=radio] {
394
+ border-radius: 50%;
395
+ }
396
+ .pkt-form-check-input:hover {
397
+ border-color: var(--color-active);
398
+ }
399
+ .pkt-form-check-input:active {
400
+ border-color: var(--color-active);
401
+ outline: 2px solid var(--color-active);
402
+ }
403
+ .pkt-form-check-input:focus {
404
+ border-color: var(--color-active);
405
+ outline: 2px solid var(--color-hover);
406
+ }
407
+ .pkt-form-check-input:checked[type=radio] {
408
+ background-color: var(--color-white);
409
+ border: 6px solid var(--color-active);
410
+ }
411
+ .pkt-form-check-input:checked[type=checkbox] {
412
+ background-color: var(--color-active);
413
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e");
414
+ border-color: var(--color-active);
415
+ }
416
+ .pkt-form-check-input:disabled {
417
+ border-color: var(--color-grayscale-30);
418
+ cursor: not-allowed;
419
+ }
420
+ .pkt-form-check-input:disabled ~ .pkt-form-label {
421
+ color: var(--color-grayscale-30);
422
+ cursor: not-allowed;
423
+ }
424
+
425
+ /*
426
+ * Horisontal divider <hr>
427
+ */
428
+ .pkt-hr {
429
+ border: 0;
430
+ border-top: 1px solid var(--color-grayscale-20);
431
+ }
432
+
433
+ /*
434
+ * Image elements
435
+ */
436
+ /*
437
+ DEBATE:
438
+ CSS reset in minside-frontend sets all images to be fluid by default. However, this breaks
439
+ a lot of third-party widgets like Google Maps, as they are not expecting the images within themselves
440
+ to be resized from the outside.
441
+
442
+ Therefore, this is removed from the reset here, and images who need to be fluid need a class for it.
443
+ */
444
+ .img-fluid {
445
+ max-width: 100%;
446
+ height: auto;
447
+ }
448
+
449
+ .img-round {
450
+ border-radius: 50%;
451
+ overflow: hidden;
452
+ object-fit: cover;
453
+ }
454
+
455
+ .figure {
456
+ display: inline-block;
457
+ }
458
+
459
+ /*
460
+ * List elements
461
+ */
462
+ .pkt-list {
463
+ display: grid;
464
+ grid-template-columns: auto;
465
+ grid-template-rows: auto;
466
+ list-style: none;
467
+ padding: 0;
468
+ position: relative;
469
+ row-gap: 1.5rem;
470
+ }
471
+ @media screen and (min-width: 48rem) {
472
+ .pkt-list.two-cols-tablet-up {
473
+ column-gap: 1.5rem;
474
+ grid-template-columns: 1fr 1fr;
475
+ grid-template-rows: auto;
476
+ }
477
+ }
478
+ @media screen and (min-width: 80rem) {
479
+ .pkt-list.three-cols-laptop-up {
480
+ column-gap: 1.5rem;
481
+ grid-template-columns: 1fr 1fr 1fr;
482
+ }
483
+ }
484
+ .pkt-list li > a {
485
+ display: grid;
486
+ grid-template-columns: 2rem auto;
487
+ column-gap: 1rem;
488
+ }
489
+
490
+ .pkt-dl,
491
+ .pkt-dl--narrow {
492
+ display: flex;
493
+ flex-direction: column;
494
+ }
495
+ @supports (display: grid) {
496
+ .pkt-dl,
497
+ .pkt-dl--narrow {
498
+ display: grid;
499
+ flex-direction: column;
500
+ grid-template-columns: 1fr;
501
+ margin: 0.5rem 0;
502
+ }
503
+ }
504
+
505
+ @media screen and (min-width: 48rem) {
506
+ .pkt-dl {
507
+ grid-template-columns: minmax(9rem, auto) 1fr;
508
+ border-bottom: 0;
509
+ }
510
+ }
511
+
512
+ .pkt-dt {
513
+ padding: 0.5em 0 0;
514
+ font-size: 0.875rem;
515
+ border-bottom: none;
516
+ }
517
+ @media screen and (min-width: 48rem) {
518
+ .pkt-dt {
519
+ font-size: inherit;
520
+ }
521
+ }
522
+
523
+ .pkt-dl--narrow > .pkt-dt {
524
+ padding: 0.5em 0 0;
525
+ font-size: 0.875rem;
526
+ border-bottom: none;
527
+ }
528
+
529
+ .pkt-dd {
530
+ padding: 0 0 0.5em;
531
+ font-weight: 500;
532
+ border-bottom: 1px solid rgba(0, 0, 0, 0.15);
533
+ }
534
+ @media screen and (min-width: 48rem) {
535
+ .pkt-dd {
536
+ border-bottom: 1px solid rgba(0, 0, 0, 0.15);
537
+ }
538
+ @supports (display: grid) {
539
+ .pkt-dd {
540
+ padding: 0.25em 0 0.25em 1.25em;
541
+ border-bottom: 0;
542
+ }
543
+ }
544
+ }
545
+
546
+ .pkt-dl--narrow > .pkt-dd {
547
+ padding: 0 0 0.5em;
548
+ font-weight: 500;
549
+ border-bottom: 1px solid rgba(0, 0, 0, 0.15);
550
+ }
551
+
552
+ /*
553
+ * Section elements
554
+ *
555
+ */
556
+ .pkt-section {
557
+ margin: 1rem 0;
558
+ }
559
+
560
+ .pkt-section--dark {
561
+ margin: 1rem 0;
562
+ padding: 0.75rem;
563
+ background-color: #2a2859;
564
+ /*
565
+ @if luminance($backgroundColor) < 0.4 {
566
+ color: white;
567
+
568
+ a:not([class^='ok-btn']) {
569
+ color: white;
570
+ text-decoration: underline;
571
+ }
572
+ }
573
+ */
574
+ color: white;
575
+ }
576
+ @media screen and (min-width: 35.938rem) {
577
+ .pkt-section--dark {
578
+ padding: 1rem;
579
+ }
580
+ }
581
+ @media screen and (min-width: 48rem) {
582
+ .pkt-section--dark {
583
+ padding: 1.5rem;
584
+ }
585
+ }
586
+ .pkt-section--dark a.pkt-btn--ter {
587
+ color: white;
588
+ }
589
+
590
+ .pkt-section--danger {
591
+ margin: 1rem 0;
592
+ padding: 0.75rem;
593
+ background-color: #ff8274;
594
+ /*
595
+ @if luminance($backgroundColor) < 0.4 {
596
+ color: white;
597
+
598
+ a:not([class^='ok-btn']) {
599
+ color: white;
600
+ text-decoration: underline;
601
+ }
602
+ }
603
+ */
604
+ color: black;
605
+ }
606
+ @media screen and (min-width: 35.938rem) {
607
+ .pkt-section--danger {
608
+ padding: 1rem;
609
+ }
610
+ }
611
+ @media screen and (min-width: 48rem) {
612
+ .pkt-section--danger {
613
+ padding: 1.5rem;
614
+ }
615
+ }
616
+ .pkt-section--danger a.pkt-btn--ter {
617
+ color: black;
618
+ }
619
+
620
+ .pkt-section--grey {
621
+ margin: 1rem 0;
622
+ padding: 0.75rem;
623
+ background-color: #f2f2f2;
624
+ /*
625
+ @if luminance($backgroundColor) < 0.4 {
626
+ color: white;
627
+
628
+ a:not([class^='ok-btn']) {
629
+ color: white;
630
+ text-decoration: underline;
631
+ }
632
+ }
633
+ */
634
+ }
635
+ @media screen and (min-width: 35.938rem) {
636
+ .pkt-section--grey {
637
+ padding: 1rem;
638
+ }
639
+ }
640
+ @media screen and (min-width: 48rem) {
641
+ .pkt-section--grey {
642
+ padding: 1.5rem;
643
+ }
644
+ }
645
+
646
+ .pkt-section--success {
647
+ margin: 1rem 0;
648
+ padding: 0.75rem;
649
+ background-color: #43f8b6;
650
+ /*
651
+ @if luminance($backgroundColor) < 0.4 {
652
+ color: white;
653
+
654
+ a:not([class^='ok-btn']) {
655
+ color: white;
656
+ text-decoration: underline;
657
+ }
658
+ }
659
+ */
660
+ color: black;
661
+ }
662
+ @media screen and (min-width: 35.938rem) {
663
+ .pkt-section--success {
664
+ padding: 1rem;
665
+ }
666
+ }
667
+ @media screen and (min-width: 48rem) {
668
+ .pkt-section--success {
669
+ padding: 1.5rem;
670
+ }
671
+ }
672
+ .pkt-section--success a.pkt-btn--ter {
673
+ color: black;
674
+ }
675
+
676
+ .pkt-section--warning {
677
+ margin: 1rem 0;
678
+ padding: 0.75rem;
679
+ background-color: #f9c66b;
680
+ /*
681
+ @if luminance($backgroundColor) < 0.4 {
682
+ color: white;
683
+
684
+ a:not([class^='ok-btn']) {
685
+ color: white;
686
+ text-decoration: underline;
687
+ }
688
+ }
689
+ */
690
+ }
691
+ @media screen and (min-width: 35.938rem) {
692
+ .pkt-section--warning {
693
+ padding: 1rem;
694
+ }
695
+ }
696
+ @media screen and (min-width: 48rem) {
697
+ .pkt-section--warning {
698
+ padding: 1.5rem;
699
+ }
700
+ }
701
+
702
+ .pkt-section--info {
703
+ margin: 1rem 0;
704
+ padding: 0.75rem;
705
+ background-color: #b3f5ff;
706
+ /*
707
+ @if luminance($backgroundColor) < 0.4 {
708
+ color: white;
709
+
710
+ a:not([class^='ok-btn']) {
711
+ color: white;
712
+ text-decoration: underline;
713
+ }
714
+ }
715
+ */
716
+ }
717
+ @media screen and (min-width: 35.938rem) {
718
+ .pkt-section--info {
719
+ padding: 1rem;
720
+ }
721
+ }
722
+ @media screen and (min-width: 48rem) {
723
+ .pkt-section--info {
724
+ padding: 1.5rem;
725
+ }
726
+ }
727
+ .pkt-section--info a.pkt-btn--ter {
728
+ color: black;
729
+ }
730
+
731
+ .pkt-section--frame {
732
+ margin: 1rem 0;
733
+ padding: 0.75rem;
734
+ background-color: white;
735
+ /*
736
+ @if luminance($backgroundColor) < 0.4 {
737
+ color: white;
738
+
739
+ a:not([class^='ok-btn']) {
740
+ color: white;
741
+ text-decoration: underline;
742
+ }
743
+ }
744
+ */
745
+ border: 1px solid;
746
+ }
747
+ @media screen and (min-width: 35.938rem) {
748
+ .pkt-section--frame {
749
+ padding: 1rem;
750
+ }
751
+ }
752
+ @media screen and (min-width: 48rem) {
753
+ .pkt-section--frame {
754
+ padding: 1.5rem;
755
+ }
756
+ }
757
+
758
+ [class*=ok-section-] > [class^=ok-title-] {
759
+ margin-top: 0;
760
+ }
761
+
762
+ .pkt-section--margin-top {
763
+ margin-top: 2.5rem;
764
+ }
765
+
766
+ /*
767
+ * Select component
768
+ *
769
+ * TODO: Det er ikke optimalt løst å duplisere svg-ikonet,
770
+ * så dette må refaktoreres ved anledning.
771
+ */
772
+ .pkt-select {
773
+ display: block;
774
+ background-color: var(--color-white);
775
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3e%3cpath d='M16 19.41L6.33 10 5 11.29 16 22l11-10.71L25.67 10 16 19.41z' fill-rule='evenodd' fill='%232a2859' /%3e%3c/svg%3e");
776
+ background-repeat: no-repeat;
777
+ background-position: right 0.7rem top 50%;
778
+ background-size: 2rem auto, 100%;
779
+ border: 2px solid var(--color-blue-dark);
780
+ border-radius: 0;
781
+ color: var(--color-blue-dark);
782
+ font-family: inherit;
783
+ font-size: 1rem;
784
+ font-weight: normal;
785
+ height: 3.125rem;
786
+ line-height: 2rem;
787
+ margin: 0;
788
+ max-width: 100%;
789
+ padding: 0.4375rem 3rem 0.4375rem 0.5rem;
790
+ width: 100%;
791
+ appearance: none;
792
+ -moz-appearance: none;
793
+ -webkit-appearance: none;
794
+ }
795
+ .pkt-select::-ms-expand {
796
+ display: none;
797
+ }
798
+ .pkt-select:enabled:focus {
799
+ border-color: var(--color-active);
800
+ outline: 2px solid var(--color-active);
801
+ }
802
+ .pkt-select:enabled:hover {
803
+ --fg-color: var(--color-active);
804
+ border-color: var(--color-active);
805
+ color: var(--color-active);
806
+ }
807
+ .pkt-select:enabled:active {
808
+ border-color: var(--color-active);
809
+ outline: none;
810
+ }
811
+ .pkt-select:-moz-focusring {
812
+ color: transparent;
813
+ text-shadow: 0 0 0 var(--color-active);
814
+ }
815
+ .pkt-select:disabled {
816
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3e%3cpath d='M16 19.41L6.33 10 5 11.29 16 22l11-10.71L25.67 10 16 19.41z' fill-rule='evenodd' fill='%23b9b9b9' /%3e%3c/svg%3e");
817
+ border-color: var(--color-grayscale-30);
818
+ color: var(--color-grayscale-30);
819
+ }
820
+ .pkt-select option {
821
+ background-color: var(--color-white);
822
+ color: var(--color-blue-dark);
823
+ font-weight: normal;
824
+ }
825
+
826
+ /*
827
+ * Table elements
828
+ */
829
+ .pkt-table {
830
+ width: 100%;
831
+ font-size: 0.875rem;
832
+ border-radius: 2px;
833
+ border-collapse: collapse;
834
+ }
835
+ .pkt-table__th {
836
+ color: black;
837
+ font-weight: 500;
838
+ text-align: left;
839
+ background: #f2f2f2;
840
+ border-bottom: 1px solid #f2f2f2;
841
+ }
842
+ .pkt-table__th:first-child {
843
+ border-top-left-radius: 2px;
844
+ }
845
+ .pkt-table__th:last-child {
846
+ border-top-right-radius: 2px;
847
+ }
848
+ .pkt-table th,
849
+ .pkt-table td {
850
+ min-width: 200px;
851
+ padding: 0.5rem;
852
+ text-align: left;
853
+ border-bottom: 1px solid #f2f2f2;
854
+ }
855
+ .pkt-table tbody tr:hover > td {
856
+ background: rgba(42, 40, 89, 0.02);
857
+ }
858
+ .pkt-table--info .pkt-table__th {
859
+ background: rgba(249, 198, 107, 0.25);
860
+ border-bottom: 1px solid #f9c66b;
861
+ }
862
+ .pkt-table--success .pkt-table__th {
863
+ background: rgba(199, 246, 201, 0.25);
864
+ border-bottom: 1px solid #c7f6c9;
865
+ }
866
+ .pkt-table--strong .pkt-table__th {
867
+ background: rgba(42, 40, 89, 0.25);
868
+ border-bottom: 1px solid #2a2859;
869
+ }
870
+ .pkt-table--shadow {
871
+ background: white;
872
+ box-shadow: 0 1px 3px rgba(42, 40, 89, 0.25);
873
+ }
874
+ .pkt-table--shadow > tbody tr:last-of-type td {
875
+ border-bottom: none;
876
+ }
877
+
878
+ .pkt-table-container {
879
+ margin: 1rem 0;
880
+ overflow-x: auto;
881
+ }