@oslokommune/punkt-css 16.26.2 → 17.0.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 (75) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/dist/css/components/accordion.css +27 -5
  3. package/dist/css/components/accordion.min.css +1 -1
  4. package/dist/css/components/alert.css +37 -9
  5. package/dist/css/components/alert.min.css +1 -1
  6. package/dist/css/components/calendar.css +4 -0
  7. package/dist/css/components/calendar.min.css +1 -1
  8. package/dist/css/components/combobox.css +82 -0
  9. package/dist/css/components/combobox.min.css +1 -1
  10. package/dist/css/components/datepicker.css +82 -3
  11. package/dist/css/components/datepicker.min.css +1 -1
  12. package/dist/css/components/footer.css +232 -108
  13. package/dist/css/components/footer.min.css +1 -1
  14. package/dist/css/components/header-global.css +287 -0
  15. package/dist/css/components/header-global.min.css +1 -0
  16. package/dist/css/components/header-menu.css +364 -123
  17. package/dist/css/components/header-menu.min.css +1 -1
  18. package/dist/css/components/header-service-mobile.css +71 -22
  19. package/dist/css/components/header-service-mobile.min.css +1 -1
  20. package/dist/css/components/header-service.css +68 -14
  21. package/dist/css/components/header-service.min.css +1 -1
  22. package/dist/css/components/header-shared.css +49 -0
  23. package/dist/css/components/header-shared.min.css +0 -0
  24. package/dist/css/components/inputwrapper.css +59 -5
  25. package/dist/css/components/inputwrapper.min.css +1 -1
  26. package/dist/css/components/modal.css +0 -5
  27. package/dist/css/components/modal.min.css +1 -1
  28. package/dist/css/components/searchinput.css +71 -2
  29. package/dist/css/components/searchinput.min.css +1 -1
  30. package/dist/css/components/textarea.css +41 -0
  31. package/dist/css/components/textarea.min.css +1 -0
  32. package/dist/css/components/textinput.css +126 -6
  33. package/dist/css/components/textinput.min.css +1 -1
  34. package/dist/css/components/timepicker.css +133 -38
  35. package/dist/css/components/timepicker.min.css +1 -1
  36. package/dist/css/elements/button.css +20 -4
  37. package/dist/css/elements/button.min.css +1 -1
  38. package/dist/css/elements/checkbox-radio.css +3 -3
  39. package/dist/css/elements/checkbox-radio.min.css +1 -1
  40. package/dist/css/elements/input.css +121 -6
  41. package/dist/css/elements/input.min.css +1 -1
  42. package/dist/css/elements/select.css +137 -9
  43. package/dist/css/elements/select.min.css +1 -1
  44. package/dist/css/pkt-base.css +434 -1
  45. package/dist/css/pkt-base.min.css +1 -1
  46. package/dist/css/pkt-components.css +1595 -348
  47. package/dist/css/pkt-components.min.css +1 -1
  48. package/dist/css/pkt-docs.css +2077 -364
  49. package/dist/css/pkt-docs.min.css +1 -1
  50. package/dist/css/pkt-elements.css +160 -16
  51. package/dist/css/pkt-elements.min.css +1 -1
  52. package/dist/css/pkt.css +2077 -364
  53. package/dist/css/pkt.min.css +1 -1
  54. package/dist/scss/abstracts/variables/_index.scss +1 -1
  55. package/dist/scss/abstracts/variables/_spacing.scss +1 -0
  56. package/dist/scss/components/_accordion.scss +7 -11
  57. package/dist/scss/components/_alert.scss +34 -11
  58. package/dist/scss/components/_calendar.scss +3 -0
  59. package/dist/scss/components/_combobox.scss +74 -0
  60. package/dist/scss/components/_datepicker.scss +75 -8
  61. package/dist/scss/components/_footer.scss +149 -123
  62. package/dist/scss/components/_header-global.scss +192 -0
  63. package/dist/scss/components/_header-menu.scss +30 -31
  64. package/dist/scss/components/_header-service-mobile.scss +4 -28
  65. package/dist/scss/components/_header-service.scss +4 -21
  66. package/dist/scss/components/_header-shared.scss +190 -0
  67. package/dist/scss/components/_index.scss +2 -0
  68. package/dist/scss/components/_inputwrapper.scss +66 -10
  69. package/dist/scss/components/_modal.scss +1 -5
  70. package/dist/scss/components/_searchinput.scss +58 -2
  71. package/dist/scss/components/_textarea.scss +48 -0
  72. package/dist/scss/components/_timepicker.scss +95 -34
  73. package/dist/scss/elements/_button.scss +12 -3
  74. package/dist/scss/elements/_input.scss +141 -7
  75. package/package.json +3 -3
@@ -6,7 +6,7 @@
6
6
  @forward 'spacing';
7
7
 
8
8
  // Default icon path
9
- $icon-path: 'https://punkt-cdn.oslo.kommune.no/16.26/icons' !default;
9
+ $icon-path: 'https://punkt-cdn.oslo.kommune.no/17.0/icons' !default;
10
10
 
11
11
  // Borders
12
12
  $border-width: (
@@ -18,6 +18,7 @@ $spacing: (
18
18
  'size-88': 5.5rem,
19
19
  'size-104': 6.5rem,
20
20
  'size-128': 8rem,
21
+ 'size-148': 9.25rem,
21
22
  /* deprecated */
22
23
  'size-5': 0.3125rem,
23
24
  'size-10': 0.625rem,
@@ -130,8 +130,8 @@ pkt-accordion[compact] {
130
130
  }
131
131
  // Accordion item
132
132
  .pkt-accordion-item {
133
- color: var(--pkt-color-brand-dark-blue-1000);
134
- background-color: var(--pkt-color-brand-neutrals-white);
133
+ color: var(--pkt-color-text-body-default);
134
+ background-color: var(--pkt-color-background-default);
135
135
  transition: transform 0.3s;
136
136
  appearance: none;
137
137
  text-align: left;
@@ -220,17 +220,13 @@ pkt-accordion[compact] {
220
220
  }
221
221
  }
222
222
 
223
- // "plus-minus" skin
224
- //
225
- // Minimal-chrome accordion used in dense surfaces like the global mega
226
- // menu. The chevron is replaced with a plus icon when collapsed and a
227
- // minus icon when expanded — both icons live in the DOM so the swap is
228
- // purely CSS, no JS state needed.
229
223
  .pkt-accordion--plus-minus,
230
- pkt-accordion[skin='plus-minus'] {
224
+ pkt-accordion[skin='plus-minus']::part(container) {
231
225
  row-gap: 0;
232
226
  }
233
227
 
228
+ .pkt-accordion--plus-minus .pkt-accordion-item,
229
+ pkt-accordion[skin='plus-minus'] .pkt-accordion-item,
234
230
  .pkt-accordion-item--plus-minus,
235
231
  pkt-accordion-item[skin='plus-minus'] > .pkt-accordion-item {
236
232
  background-color: transparent;
@@ -245,14 +241,14 @@ pkt-accordion-item[skin='plus-minus'] > .pkt-accordion-item {
245
241
  text-decoration: underline;
246
242
 
247
243
  .pkt-accordion-item__icon {
248
- transform: none;
244
+ transform: none !important;
249
245
  }
250
246
  }
251
247
  }
252
248
 
253
249
  > .pkt-accordion-item__content {
254
250
  padding: map.get(variables.$spacing, 'size-16');
255
- background-color: var(--pkt-color-brand-neutrals-200);
251
+ background-color: var(--pkt-color-background-subtle);
256
252
  }
257
253
 
258
254
  .pkt-accordion-item__icon--plus,
@@ -8,7 +8,7 @@
8
8
 
9
9
  $-module-name: 'pkt-alert';
10
10
 
11
- // Spacing
11
+ $-spacing-6: map.get(variables.$spacing, 'size-6');
12
12
  $-spacing-8: map.get(variables.$spacing, 'size-8');
13
13
  $-spacing-12: map.get(variables.$spacing, 'size-12');
14
14
  $-spacing-16: map.get(variables.$spacing, 'size-16');
@@ -63,13 +63,6 @@ pkt-alert {
63
63
  grid-row: 1/2;
64
64
  grid-column: 2/3;
65
65
  }
66
-
67
- @media (max-width: 768px) {
68
- .pkt-alert__text {
69
- grid-row: 2 / 3;
70
- grid-column: 1 / -1;
71
- }
72
- }
73
66
  }
74
67
 
75
68
  .pkt-alert {
@@ -130,16 +123,21 @@ pkt-alert {
130
123
  }
131
124
  }
132
125
 
126
+ // 24×24 icon — used for standalone compact alerts and field errors on medium inputs
127
+ .pkt-alert--small,
133
128
  .pkt-alert--compact {
134
- padding: $-spacing-12 $-spacing-16;
129
+ display: flex;
130
+ min-height: 3rem;
131
+ padding: $-spacing-8 $-spacing-12;
135
132
 
136
133
  .pkt-alert__grid {
137
134
  gap: $-spacing-8;
135
+ width: 100%;
138
136
  }
139
137
 
140
138
  .pkt-alert__icon {
141
- width: 1.375rem;
142
- height: 1.375rem;
139
+ width: 1.5rem;
140
+ height: 1.5rem;
143
141
  }
144
142
 
145
143
  .pkt-alert__title {
@@ -150,3 +148,28 @@ pkt-alert {
150
148
  @include get-text('pkt-txt-16-light');
151
149
  }
152
150
  }
151
+
152
+ // 20×20 icon — used for field errors on small/xsmall inputs
153
+ .pkt-alert--xsmall {
154
+ display: flex;
155
+ min-height: 2.5rem;
156
+ padding: $-spacing-6 $-spacing-12;
157
+
158
+ .pkt-alert__grid {
159
+ gap: $-spacing-6;
160
+ width: 100%;
161
+ }
162
+
163
+ .pkt-alert__icon {
164
+ width: 1.25rem;
165
+ height: 1.25rem;
166
+ }
167
+
168
+ .pkt-alert__title {
169
+ @include get-text('pkt-txt-14-medium');
170
+ }
171
+
172
+ .pkt-alert__text {
173
+ @include get-text('pkt-txt-14-light');
174
+ }
175
+ }
@@ -57,6 +57,9 @@ pkt-calendar {
57
57
  td {
58
58
  padding: 0;
59
59
  }
60
+ .pkt-btn {
61
+ padding: 0;
62
+ }
60
63
  button,
61
64
  div {
62
65
  aspect-ratio: 1 / 1;
@@ -74,6 +74,32 @@ pkt-combobox,
74
74
  width: 100%;
75
75
  }
76
76
 
77
+ &--small {
78
+ min-height: 2.625rem;
79
+ padding: 0.375rem 2.5rem 0.375rem 0.375rem;
80
+ @include typography.get-text('pkt-txt-16-light');
81
+
82
+ .pkt-combobox__arrow-icon svg {
83
+ width: 1.25rem;
84
+ height: 1.25rem;
85
+ }
86
+ }
87
+
88
+ &--xsmall {
89
+ min-height: 2.25rem;
90
+ padding: 0.25rem 2.25rem 0.25rem 0.25rem;
91
+ @include typography.get-text('pkt-txt-14-light');
92
+
93
+ .pkt-combobox__arrow-icon {
94
+ padding: 0.25rem 0.5rem;
95
+ }
96
+
97
+ .pkt-combobox__arrow-icon svg {
98
+ width: 1.125rem;
99
+ height: 1.125rem;
100
+ }
101
+ }
102
+
77
103
  &:hover:not(&--disabled):not(&--error) {
78
104
  border-color: var(--pkt-color-input-border-hover);
79
105
 
@@ -207,3 +233,51 @@ pkt-combobox,
207
233
  .pkt-inputwrapper:not([data-navtype='pointer']) .pkt-combobox__input:focus-within {
208
234
  outline: 4px solid var(--pkt-color-border-states-focus);
209
235
  }
236
+
237
+ // Dropdown scale follows input wrapper size (small / xsmall combobox fields)
238
+ .pkt-inputwrapper--small,
239
+ .pkt-inputwrapper--xsmall {
240
+ .pkt-listbox {
241
+ .pkt-listbox__option:not(.pkt-listbox__search) {
242
+ padding: map.get(variables.$spacing, 'size-8') map.get(variables.$spacing, 'size-16');
243
+ @include typography.get-text('pkt-txt-16-light');
244
+ }
245
+
246
+ .pkt-listbox__empty,
247
+ .pkt-listbox__banner {
248
+ padding: map.get(variables.$spacing, 'size-8') map.get(variables.$spacing, 'size-16');
249
+ @include typography.get-text('pkt-txt-16-light');
250
+ }
251
+
252
+ .pkt-listbox__search input {
253
+ padding: map.get(variables.$spacing, 'size-8') map.get(variables.$spacing, 'size-12');
254
+ @include typography.get-text('pkt-txt-16-light');
255
+ }
256
+ }
257
+ }
258
+
259
+ .pkt-inputwrapper--xsmall {
260
+ .pkt-listbox {
261
+ .pkt-listbox__option:not(.pkt-listbox__search) {
262
+ padding: map.get(variables.$spacing, 'size-6') map.get(variables.$spacing, 'size-12');
263
+ @include typography.get-text('pkt-txt-14-light');
264
+ }
265
+
266
+ .pkt-listbox__empty,
267
+ .pkt-listbox__banner {
268
+ padding: map.get(variables.$spacing, 'size-6') map.get(variables.$spacing, 'size-12');
269
+ @include typography.get-text('pkt-txt-14-light');
270
+ }
271
+
272
+ .pkt-listbox__banner-icon,
273
+ .pkt-listbox__search-icon .pkt-icon {
274
+ width: 1.125rem;
275
+ height: 1.125rem;
276
+ }
277
+
278
+ .pkt-listbox__search input {
279
+ padding: map.get(variables.$spacing, 'size-6') map.get(variables.$spacing, 'size-8');
280
+ @include typography.get-text('pkt-txt-14-light');
281
+ }
282
+ }
283
+ }
@@ -1,6 +1,4 @@
1
- // Datepicker wrapper & input styles
2
- // Primary selectors use CSS classes (framework-agnostic).
3
- // Element selectors kept for backward compatibility with web components.
1
+ @use '../abstracts/mixins/typography';
4
2
 
5
3
  .pkt-datepicker,
6
4
  pkt-datepicker {
@@ -122,25 +120,94 @@ pkt-datepicker-multiple {
122
120
  -webkit-appearance: none;
123
121
  }
124
122
 
125
- // Firefox specific styles :(
126
- @-moz-document url-prefix() {
123
+ .pkt-datepicker__input.pkt-input--fullwidth.pkt-datepicker--multiple {
124
+ flex: 1;
125
+ min-width: 0;
126
+ }
127
+
128
+ @mixin datepicker-field-size(
129
+ $segment-min-height,
130
+ $text-style,
131
+ $icon-size,
132
+ $input-width,
133
+ $button-width,
134
+ $line-height: null
135
+ ) {
136
+ .pkt-datepicker__inputs {
137
+ .pkt-input,
138
+ .pkt-input-prefix,
139
+ .pkt-input-suffix,
140
+ .pkt-input-icon,
141
+ .pkt-input-separator {
142
+ min-height: $segment-min-height;
143
+ }
144
+
145
+ .pkt-datepicker__input,
146
+ .pkt-input-prefix,
147
+ .pkt-input-separator {
148
+ @include typography.get-text($text-style);
149
+
150
+ @if $line-height {
151
+ line-height: $line-height;
152
+ }
153
+ }
154
+
155
+ button.pkt-input-icon {
156
+ padding-left: 0.5rem;
157
+ padding-right: 0.5rem;
158
+
159
+ pkt-icon,
160
+ .pkt-icon,
161
+ svg {
162
+ width: $icon-size;
163
+ height: $icon-size;
164
+ }
165
+ }
166
+
167
+ @supports not (-moz-appearance: none) {
168
+ .pkt-datepicker__input:not(.pkt-datepicker--multiple):not(.pkt-input--fullwidth) {
169
+ width: $input-width;
170
+ }
171
+
172
+ .pkt-datepicker__input:not(.pkt-datepicker--multiple):not(.pkt-datepicker--range) {
173
+ max-width: calc(100% - $button-width);
174
+ }
175
+ }
176
+ }
177
+ }
178
+
179
+ .pkt-datepicker--small {
180
+ @include datepicker-field-size(2.375rem, 'pkt-txt-16-light', 1.25rem, 7.3rem, 2.5rem);
181
+ }
182
+
183
+ .pkt-datepicker--xsmall {
184
+ @include datepicker-field-size(2rem, 'pkt-txt-14-light', 1.125rem, 6.5rem, 2rem, $line-height: 1rem);
185
+ }
186
+
187
+ @supports (-moz-appearance: none) {
127
188
  .pkt-datepicker__inputs {
128
189
  .pkt-datepicker__input {
129
190
  padding-right: 0.5rem;
130
191
  }
131
192
  .pkt-datepicker__input:not(.pkt-datepicker--multiple) {
132
- width: 10.5rem;
133
- max-width: calc(100%);
193
+ width: auto;
194
+ max-width: 100%;
134
195
  }
135
196
  .pkt-datepicker__input.pkt-input--fullwidth:not(.pkt-datepicker--multiple) {
136
197
  width: auto;
137
198
  flex: 1;
138
199
  }
139
- button.pkt-input-icon {
200
+ .pkt-input__container:has(.pkt-datepicker__input[type='date']) button.pkt-input-icon {
140
201
  display: none;
141
202
  }
142
203
  input.pkt-datepicker__input:has(~ button):not(:has(~ .pkt-input-separator)):not(:has(~ .pkt-input-prefix)) {
143
204
  border-right-width: 2px !important;
144
205
  }
206
+
207
+ @media screen and (max-width: 30rem) {
208
+ .pkt-input__container .pkt-datepicker__input.pkt-datepicker--range {
209
+ justify-self: start;
210
+ }
211
+ }
145
212
  }
146
213
  }
@@ -1,176 +1,203 @@
1
1
  /*
2
- * Footer element
2
+ * Footer: pkt-footer (sekundær + global) og pkt-footer-simple (kompakt + global)
3
+ *
4
+ * --pkt-footer-bg bakgrunn (default: grå sekundær)
5
+ * --pkt-footer-fg tekstfarge
6
+ * --pkt-footer-link-hover hover-farge på lenker (default: text-action-active)
3
7
  */
4
8
 
5
9
  @use 'sass:map';
6
10
  @use '../abstracts/variables';
7
- @use '../abstracts/mixins/breakpoints' as *;
11
+ @use '../abstracts/mixins/container-queries' as *;
8
12
  @use '../abstracts/mixins/typography';
9
13
 
10
- $-footer-bg-color: var(--pkt-color-surface-strong-dark-blue);
11
- $-footer-color: var(--pkt-color-text-body-default);
12
- $-footer-max-width: map.get(variables.$breakpoints, 'laptop');
13
- $-footer-icon-r-margin: map.get(variables.$spacing, 'size-8');
14
- $-footer-link-b-margin: map.get(variables.$spacing, 'size-16');
14
+ $-footer-content-max-width: 75rem;
15
+
16
+ .pkt-footer,
17
+ .pkt-footer-simple {
18
+ display: block;
19
+ width: 100%;
20
+ container-type: inline-size;
21
+ container-name: pkt-footer;
22
+ }
15
23
 
16
24
  .pkt-footer {
17
- padding: map.get(variables.$spacing, 'size-40') map.get(variables.$spacing, 'size-24');
18
- background-color: $-footer-bg-color;
19
- color: $-footer-color;
20
- display: flex;
21
- align-items: center;
22
-
23
- @include typography.get-text('pkt-txt-18-light');
24
- @include bp('laptop-up') {
25
- padding: map.get(variables.$spacing, 'size-56') map.get(variables.$spacing, 'size-24');
26
- justify-content: center;
27
- }
25
+ &__band {
26
+ background-color: var(--pkt-footer-bg, var(--pkt-color-background-subtle, #f9f9f9));
27
+ color: var(--pkt-footer-fg, var(--pkt-color-text-body-default, #2a2859));
28
28
 
29
- &__container {
30
- max-width: $-footer-max-width;
31
- }
29
+ @include typography.get-text('pkt-txt-16-light');
32
30
 
33
- &__title {
34
- margin-bottom: map.get(variables.$spacing, 'size-32');
35
- margin-top: 0;
36
- color: $-footer-color;
37
- @include typography.get-text('pkt-txt-24-medium');
38
- }
31
+ @include cq('pkt-footer', $cq-bp-tablet-big) {
32
+ @include typography.get-text('pkt-txt-18-light');
33
+ }
39
34
 
40
- // tekstfelt
41
- &__text:last-child {
42
- margin-bottom: 0;
43
- margin-top: map.get(variables.$spacing, 'size-32');
44
- }
35
+ &--global {
36
+ --pkt-footer-bg: var(--pkt-color-surface-strong-dark-blue, #2a2859);
37
+ --pkt-footer-fg: var(--pkt-color-text-body-light, #fff);
38
+ --pkt-footer-link-hover: var(--pkt-color-brand-blue-1000, #6fe9ff);
39
+ }
45
40
 
46
- &__text:not(:last-child) {
47
- margin-bottom: map.get(variables.$spacing, 'size-32');
48
- margin-top: 0;
49
- }
41
+ a {
42
+ color: inherit;
43
+ text-decoration: underline;
44
+ text-underline-position: from-font;
50
45
 
51
- // Lenkelisten
52
- &__list {
53
- padding: 0;
54
- margin: 0;
55
- list-style: none;
56
- }
46
+ &:hover {
47
+ // !important fordi grunnstilene våre er altfor spesifikke...
48
+ color: var(--pkt-footer-link-hover, var(--pkt-color-text-action-active, currentColor)) !important;
49
+ }
50
+ }
51
+
52
+ h2 {
53
+ margin: 0 0 map.get(variables.$spacing, 'size-16');
54
+ color: inherit;
57
55
 
58
- &__list-item {
59
- word-break: break-word;
56
+ @include typography.get-text('pkt-txt-20-medium');
57
+
58
+ @include cq('pkt-footer', $cq-bp-tablet) {
59
+ @include typography.get-text('pkt-txt-22-medium');
60
+ }
60
61
 
61
- &:not(:last-child) {
62
- margin-bottom: $-footer-link-b-margin;
62
+ @include cq('pkt-footer', $cq-bp-tablet-big) {
63
+ @include typography.get-text('pkt-txt-24-medium');
64
+ }
63
65
  }
64
66
 
65
- @include bp('laptop-up') {
66
- margin-bottom: 0;
67
+ p {
68
+ margin: 0 0 map.get(variables.$spacing, 'size-16');
67
69
  }
68
70
  }
69
71
 
70
- &__link {
71
- display: flex;
72
- text-decoration: none !important;
72
+ &__inner {
73
+ max-width: $-footer-content-max-width;
74
+ margin: 0 auto;
75
+ padding: map.get(variables.$spacing, 'size-52') map.get(variables.$spacing, 'size-16');
73
76
 
74
- &:hover .pkt-footer__link-icon {
75
- --fg-color: currentColor;
77
+ @include cq('pkt-footer', $cq-bp-tablet) {
78
+ padding: map.get(variables.$spacing, 'size-52') map.get(variables.$spacing, 'size-32');
76
79
  }
77
- }
78
80
 
79
- &__link-icon {
80
- --fg-color: currentColor;
81
- width: 24px;
82
- height: 24px;
83
- margin-right: $-footer-icon-r-margin;
84
- flex-shrink: 0;
85
-
86
- @include bp('laptop-up') {
87
- margin-top: 0;
81
+ &--compact {
82
+ padding-top: map.get(variables.$spacing, 'size-32');
83
+ padding-bottom: map.get(variables.$spacing, 'size-32');
88
84
  }
89
85
  }
90
86
 
91
- // Social media ikoner og språklenke
92
- &__social {
93
- display: flex;
94
- flex-direction: row;
95
- justify-content: space-between;
96
- align-items: flex-start;
87
+ &__sections {
88
+ display: grid;
89
+ grid-template-columns: 1fr;
97
90
  gap: map.get(variables.$spacing, 'size-32');
98
- margin-top: map.get(variables.$spacing, 'size-40');
99
91
 
100
- &:hover .pkt-footer__link-icon {
101
- --fg-color: currentColor;
102
- }
103
-
104
- @include bp('laptop-up') {
105
- align-items: flex-end;
106
- justify-content: end;
92
+ @include cq('pkt-footer', $cq-bp-tablet) {
93
+ grid-template-columns: repeat(3, 1fr);
94
+ column-gap: map.get(variables.$spacing, 'size-32');
95
+ row-gap: map.get(variables.$spacing, 'size-52');
107
96
  }
97
+ }
108
98
 
109
- &-language {
110
- @include bp('laptop-up') {
111
- justify-self: flex-start;
112
- }
113
- }
99
+ &__link-list {
100
+ list-style: none;
101
+ margin: 0;
102
+ padding: 0;
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: map.get(variables.$spacing, 'size-16');
114
106
 
115
- &-icon {
116
- --fg-color: currentColor;
117
- width: 24px;
118
- height: 24px;
107
+ > li {
108
+ word-break: break-word;
119
109
  }
110
+ }
120
111
 
121
- &-icon-link:not(:last-child) {
122
- margin-right: map.get(variables.$spacing, 'size-16');
123
- }
112
+ &__link-domain {
113
+ white-space: nowrap;
124
114
  }
125
- }
126
115
 
127
- // Simple footer
116
+ &__bottom {
117
+ display: flex;
118
+ justify-content: space-between;
119
+ align-items: center;
120
+ gap: map.get(variables.$spacing, 'size-32');
121
+ margin-top: map.get(variables.$spacing, 'size-16');
128
122
 
129
- .pkt-footer-simple {
130
- padding: map.get(variables.$spacing, 'size-32') map.get(variables.$spacing, 'size-24');
131
- background-color: $-footer-bg-color;
132
- color: $-footer-color;
133
- display: flex;
134
- align-items: center;
135
-
136
- @include typography.get-text('pkt-txt-18-light');
137
- @include bp('laptop-up') {
138
- justify-content: center;
123
+ @include cq('pkt-footer', $cq-bp-tablet) {
124
+ grid-column: -2 / -1;
125
+ margin-top: 0;
126
+ }
139
127
  }
140
128
 
141
- &__container {
142
- max-width: $-footer-max-width;
129
+ &__sections + &__bottom {
130
+ margin-top: map.get(variables.$spacing, 'size-32');
143
131
  }
144
132
 
145
- // Lenkelisten
146
- &__list {
147
- padding: 0;
148
- margin: 0;
133
+ &__bottom-links {
149
134
  list-style: none;
135
+ margin: 0;
136
+ padding: 0;
137
+ display: flex;
138
+ flex-wrap: wrap;
139
+ gap: map.get(variables.$spacing, 'size-16') map.get(variables.$spacing, 'size-32');
150
140
  }
151
141
 
152
- &__list-item {
153
- @include bp('laptop-up') {
154
- display: inline-flex;
142
+ &__some {
143
+ list-style: none;
144
+ margin: 0;
145
+ padding: 0;
146
+ display: flex;
147
+ align-items: center;
148
+ gap: map.get(variables.$spacing, 'size-16');
149
+
150
+ @include cq('pkt-footer', $cq-bp-tablet) {
151
+ gap: map.get(variables.$spacing, 'size-24');
155
152
  }
156
153
 
157
- &:not(:last-child) {
158
- margin-bottom: $-footer-link-b-margin;
154
+ a {
155
+ display: inline-flex;
159
156
 
160
- @include bp('laptop-up') {
161
- margin-bottom: 0;
162
- margin-right: map.get(variables.$spacing, 'size-32');
157
+ &:has(.pkt-footer__some-icon) {
158
+ text-decoration: none;
163
159
  }
164
160
  }
165
161
  }
166
162
 
167
- &__link {
163
+ &__some-icon {
164
+ --fg-color: currentColor;
165
+ width: 2rem;
166
+ height: 2rem;
167
+ }
168
+
169
+ &__sections + &__consent {
170
+ margin-top: map.get(variables.$spacing, 'size-32');
171
+ }
172
+ }
173
+
174
+ .pkt-footer-simple {
175
+ &__list {
176
+ list-style: none;
177
+ margin: 0;
178
+ padding: 0;
168
179
  display: flex;
169
- text-decoration: none !important;
180
+ flex-direction: column;
181
+ gap: map.get(variables.$spacing, 'size-16');
182
+
183
+ @include cq('pkt-footer', $cq-bp-tablet) {
184
+ flex-direction: row;
185
+ flex-wrap: wrap;
186
+ justify-content: center;
187
+ gap: map.get(variables.$spacing, 'size-16') map.get(variables.$spacing, 'size-32');
188
+ }
189
+ }
190
+
191
+ @at-root a#{&}__link {
192
+ display: inline-flex;
170
193
  align-items: flex-start;
194
+ gap: map.get(variables.$spacing, 'size-8');
195
+ color: inherit;
196
+ text-decoration: none;
171
197
 
172
- &:hover .pkt-footer__link-icon {
173
- --fg-color: currentColor;
198
+ &:hover {
199
+ text-decoration: underline;
200
+ text-underline-position: from-font;
174
201
  }
175
202
  }
176
203
 
@@ -178,11 +205,10 @@ $-footer-link-b-margin: map.get(variables.$spacing, 'size-16');
178
205
  --fg-color: currentColor;
179
206
  width: 24px;
180
207
  height: 24px;
181
- margin-right: $-footer-icon-r-margin;
182
208
  flex-shrink: 0;
209
+ }
183
210
 
184
- @include bp('laptop-up') {
185
- margin-top: 0;
186
- }
211
+ &__link-domain {
212
+ white-space: nowrap;
187
213
  }
188
214
  }