@navikt/ds-css 8.9.1 → 8.10.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/ds-css",
3
- "version": "8.9.1",
3
+ "version": "8.10.1",
4
4
  "description": "CSS for Nav Designsystem",
5
5
  "author": "Aksel | Nav designsystem team",
6
6
  "keywords": [
@@ -30,7 +30,7 @@
30
30
  "css:get-version": "node config/get-version.js"
31
31
  },
32
32
  "devDependencies": {
33
- "@navikt/ds-tokens": "^8.9.1",
33
+ "@navikt/ds-tokens": "^8.10.1",
34
34
  "browserslist": "^4.25.0",
35
35
  "esbuild": "^0.27.4",
36
36
  "fast-glob": "3.3.3",
package/src/alert.css CHANGED
@@ -114,6 +114,11 @@
114
114
  &[data-variant="moderate"] {
115
115
  outline: 1px solid var(--ax-border-default);
116
116
  outline-offset: -1px;
117
+
118
+ /* Adjust horizontal padding for small moderate alerts */
119
+ &[data-size="small"] {
120
+ --__axc-base-alert-pi: var(--ax-space-16);
121
+ }
117
122
  }
118
123
 
119
124
  &[data-variant="strong"] {
@@ -145,6 +150,9 @@
145
150
  background: var(--ax-bg-moderate);
146
151
  color: var(--ax-text-default);
147
152
  border-color: var(--ax-border-subtleA);
153
+
154
+ /* Optical alignment */
155
+ padding-top: var(--ax-space-1);
148
156
  }
149
157
 
150
158
  .aksel-base-alert[data-variant="strong"] & {
@@ -172,6 +180,10 @@
172
180
  padding: var(--__axc-base-alert-content-p);
173
181
  background-color: var(--ax-bg-default);
174
182
 
183
+ &[data-color] {
184
+ color: var(--ax-text-neutral);
185
+ }
186
+
175
187
  .aksel-base-alert[data-global="true"] & {
176
188
  padding-inline: var(--__axc-global-alert-alignment);
177
189
  }
@@ -48,41 +48,70 @@
48
48
  background-color: var(--ax-bg-neutral-softA);
49
49
  }
50
50
  }
51
-
52
- &[data-truncate-content="true"] {
53
- .aksel-data-table__td:not(.aksel-data-table--UNSAFE_isSelection) > div {
54
- text-overflow: ellipsis;
55
- white-space: nowrap;
56
- overflow: hidden;
57
- }
58
- }
59
51
  }
60
52
 
61
53
  .aksel-data-table__thead {
62
54
  background-color: var(--ax-bg-raised);
63
- position: sticky;
64
- top: 0;
55
+
56
+ .aksel-data-table[data-loading="true"] &::after {
57
+ content: "";
58
+ position: absolute;
59
+ block-size: 2px;
60
+ inset-block-end: -2px;
61
+ background-color: var(--ax-bg-strong);
62
+ animation: animateDataTableLoading 1s linear infinite;
63
+ z-index: 11;
64
+ }
65
65
  }
66
66
 
67
67
  .aksel-data-table__tbody {
68
68
  background-color: var(--ax-bg-raised);
69
- }
69
+ position: relative;
70
+
71
+ &[inert] {
72
+ transition: opacity 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
73
+ opacity: var(--ax-opacity-disabled);
74
+
75
+ @starting-style {
76
+ opacity: 0.001;
77
+ }
78
+ }
70
79
 
71
- .aksel-data-table__tr--selected {
72
- background-color: var(--ax-bg-softA);
73
- box-shadow:
74
- inset 1px 0 0 0 var(--ax-border-default),
75
- inset -1px 0 0 0 var(--ax-border-default);
80
+ &[inert]::after {
81
+ content: "";
82
+ position: absolute;
83
+ inset: 0;
84
+ background-color: var(--ax-bg-overlay);
85
+ transition: opacity 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
86
+ z-index: 10;
87
+ opacity: 0.2;
88
+
89
+ /* iOS 26+: Ensure the backdrop covers the entire visible viewport. */
90
+
91
+ @starting-style {
92
+ opacity: 0.001;
93
+ }
94
+ }
95
+ }
76
96
 
77
- &:first-of-type {
78
- box-shadow:
79
- inset 1px 0 0 0 var(--ax-border-default),
80
- inset -1px 0 0 0 var(--ax-border-default),
81
- inset 0 1px 0 0 var(--ax-border-default);
97
+ .aksel-data-table__tr {
98
+ &[data-selected="true"] {
99
+ background-color: var(--ax-bg-softA);
82
100
  }
83
101
 
84
- & :is(.aksel-data-table__td, .aksel-data-table__th) {
85
- border-color: var(--ax-border-default);
102
+ .aksel-data-table__thead &[data-sticky="true"] {
103
+ position: sticky;
104
+ top: 0;
105
+ z-index: 3;
106
+
107
+ &::after {
108
+ content: "";
109
+ position: absolute;
110
+ inset-inline: 0;
111
+ bottom: -1px;
112
+ pointer-events: none;
113
+ border-bottom: 1px solid var(--ax-border-neutral-subtle);
114
+ }
86
115
  }
87
116
  }
88
117
 
@@ -100,6 +129,7 @@
100
129
  pointer-events: none;
101
130
  border: 1px solid var(--ax-border-neutral-subtle);
102
131
  border-radius: var(--ax-radius-12);
132
+ z-index: 3;
103
133
  }
104
134
  }
105
135
 
@@ -111,16 +141,24 @@
111
141
  }
112
142
 
113
143
  .aksel-data-table__thead {
144
+ position: relative; /* Shadow ends up behind loading/empty-state without, consider after-element instead like with sticky */
114
145
  box-shadow: 0 1px 0 0 var(--ax-border-neutral-subtle);
115
146
  }
116
147
 
117
- .aksel-data-table__th,
118
- .aksel-data-table__td {
148
+ .aksel-data-table__cell {
119
149
  /* border doesn't work on sticky thead when we have collapsed borders, so using box-shadow instead */
120
150
  box-shadow: inset 1px 1px 0 0 var(--ax-border-neutral-subtle);
151
+ text-align: start;
152
+ vertical-align: middle;
153
+ scroll-margin: var(--ax-space-0);
154
+ padding: 0;
155
+
156
+ .aksel-data-table__thead & {
157
+ background-color: var(--ax-bg-neutral-soft);
158
+ }
121
159
 
122
160
  &[data-align="left"] {
123
- text-align: left;
161
+ text-align: start;
124
162
  }
125
163
 
126
164
  &[data-align="center"] {
@@ -128,18 +166,79 @@
128
166
  }
129
167
 
130
168
  &[data-align="right"] {
131
- text-align: right;
169
+ text-align: end;
170
+ }
171
+
172
+ &[data-sticky] {
173
+ position: sticky;
174
+ z-index: 1;
175
+
176
+ &::after {
177
+ content: "";
178
+ position: absolute;
179
+ inset-block: 0;
180
+ pointer-events: none;
181
+ border-color: var(--ax-border-neutral-subtle);
182
+ border-style: solid;
183
+ border-width: 0;
184
+ }
185
+
186
+ &[data-sticky="start"] {
187
+ left: 0;
188
+
189
+ &::after {
190
+ inset-inline: 0 -1px;
191
+ border-right-width: 1px;
192
+ }
193
+ }
194
+
195
+ &[data-sticky="end"] {
196
+ right: 0;
197
+ }
198
+
199
+ background-color: var(--ax-bg-raised);
200
+
201
+ .aksel-data-table__thead & {
202
+ background-color: var(--ax-bg-neutral-soft);
203
+ }
204
+ }
205
+
206
+ &:focus-visible,
207
+ /* Focus instead of focus-visible so that effect of sort-icon staying isnt strange */
208
+ /* TODO: Update from th to generic */
209
+ &:has(.aksel-data-table__th-sort-button:focus) {
210
+ outline: 2px solid var(--ax-border-focus);
211
+ outline-offset: -4px;
212
+ }
213
+
214
+ &[data-selectable="true"] {
215
+ padding: 0;
216
+
217
+ & > div {
218
+ display: grid;
219
+ place-content: center;
220
+ }
221
+ }
222
+
223
+ &:not([data-selectable="true"]) > div {
224
+ padding-block: var(--__axc-data-table-density);
225
+ padding-inline: var(--ax-space-16);
226
+
227
+ .aksel-data-table[data-truncate-content="true"] & {
228
+ text-overflow: ellipsis;
229
+ white-space: nowrap;
230
+ overflow: hidden;
231
+ }
132
232
  }
133
233
  }
134
234
 
135
235
  /* BORDER STYLING END */
136
236
 
137
- .aksel-data-table__th {
237
+ .aksel-data-table__column-header {
238
+ /* TODO: Might want this to be dynamic */
239
+ --__axc-data-table-density: var(--ax-space-8);
240
+
138
241
  position: relative;
139
- background-color: var(--ax-bg-neutral-soft);
140
- color: var(--ax-text-neutral);
141
- padding: var(--ax-space-8) var(--ax-space-16);
142
- text-align: start;
143
242
  font-weight: var(--ax-font-weight-bold);
144
243
 
145
244
  &:has(.aksel-data-table__th-sort-button):hover {
@@ -160,7 +259,6 @@
160
259
  display: flex;
161
260
  align-items: center;
162
261
  gap: var(--ax-space-2);
163
- padding-inline-start: var(--ax-space-16);
164
262
  block-size: calc(var(--__axc-data-table-density) + 1.5rem);
165
263
  width: 100%;
166
264
  cursor: pointer;
@@ -168,6 +266,7 @@
168
266
  background-color: transparent;
169
267
  border: none;
170
268
  font-weight: inherit;
269
+ padding: 0;
171
270
 
172
271
  &:focus-visible {
173
272
  outline: none;
@@ -202,7 +301,7 @@
202
301
  }
203
302
 
204
303
  .aksel-data-table__th-resize-handle {
205
- z-index: 2;
304
+ z-index: 1;
206
305
  position: absolute;
207
306
  cursor: col-resize;
208
307
  margin: 0;
@@ -233,6 +332,13 @@
233
332
  transition: background 50ms linear;
234
333
  }
235
334
 
335
+ &:hover,
336
+ &:focus-visible,
337
+ &:active {
338
+ /* Avoids clipping when having sticky columns */
339
+ z-index: 3;
340
+ }
341
+
236
342
  &:hover::after {
237
343
  /* TODO: Consider if the resize-handle should be visible already when hovering the column header */
238
344
  background: var(--ax-bg-strong);
@@ -243,7 +349,7 @@
243
349
  background: var(--ax-bg-strong-pressed);
244
350
  }
245
351
 
246
- .aksel-data-table__th:last-of-type & {
352
+ .aksel-data-table__column-header:last-of-type & {
247
353
  inset-inline-end: 0;
248
354
  width: 15px;
249
355
 
@@ -301,18 +407,6 @@
301
407
  }
302
408
  }
303
409
 
304
- .aksel-data-table__td {
305
- text-align: start;
306
- vertical-align: middle;
307
- color: var(--ax-text-neutral-subtle);
308
-
309
- &:not(.aksel-data-table--UNSAFE_isSelection) > div {
310
- padding-block: var(--__axc-data-table-density);
311
- padding-inline: 1rem;
312
- }
313
- }
314
-
315
- .aksel-data-table__td,
316
410
  .aksel-data-table__th {
317
411
  scroll-margin-block: var(--ax-space-0);
318
412
  scroll-margin-inline: var(--ax-space-0);
@@ -324,9 +418,13 @@
324
418
  outline-offset: -4px;
325
419
  }
326
420
 
327
- &.aksel-data-table--UNSAFE_isSelection > div {
328
- display: grid;
329
- place-content: center;
421
+ &[data-selectable="true"] {
422
+ padding: 0;
423
+
424
+ & > div {
425
+ display: grid;
426
+ place-content: center;
427
+ }
330
428
  }
331
429
  }
332
430
 
@@ -382,26 +480,34 @@
382
480
  }
383
481
  }
384
482
 
385
- .aksel-data-drag-and-drop__drag-handler__arrow {
386
- height: 1.2rem;
387
- }
388
-
389
483
  .aksel-data-drag-and-drop__drag-handler__alt,
390
484
  .aksel-data-drag-and-drop__drag-handler {
391
485
  position: relative;
392
486
  height: 1.5rem;
393
487
 
394
488
  .aksel-data-drag-and-drop__drag-handler__arrow {
489
+ height: 1.8rem;
395
490
  position: absolute;
396
491
  left: 50%;
397
492
  transform: translate(-50%, -50%);
493
+ background: var(--ax-bg-default);
494
+ border: none;
495
+ cursor: pointer;
496
+ padding: 0;
497
+ border-radius: 50%;
498
+ z-index: 1;
398
499
 
399
500
  &[data-direction="up"] {
400
- top: -10px;
501
+ top: -18px;
401
502
  }
402
503
 
403
504
  &[data-direction="down"] {
404
- bottom: calc(-100% - 6px);
505
+ bottom: calc(-100% - 22px);
506
+ }
507
+
508
+ &:disabled {
509
+ opacity: 0.8;
510
+ cursor: not-allowed;
405
511
  }
406
512
  }
407
513
  }
@@ -425,16 +531,6 @@
425
531
  gap: var(--ax-space-8);
426
532
  justify-items: center;
427
533
  position: relative;
428
-
429
- &::before {
430
- content: "";
431
- position: absolute;
432
- inline-size: 100%;
433
- block-size: 2px;
434
- inset-block-start: -1px;
435
- background-color: var(--ax-bg-strong);
436
- animation: animateDataTableLoading 1s linear infinite;
437
- }
438
534
  }
439
535
 
440
536
  @keyframes animateDataTableLoading {
@@ -471,9 +567,9 @@
471
567
  /* TODO -
472
568
  * This is needed to prevent the cursor from changing back to default when dragging over interactive elements in the row.
473
569
  * Not sure if this is the best approach or breaks styling elsewhere */
474
- html[data-dragging="true"],
475
- html[data-dragging="true"] *,
476
- html[data-dragging="true"] *::before,
477
- html[data-dragging="true"] *::after {
570
+ html[data-dragging-cursor="true"],
571
+ html[data-dragging-cursor="true"] *,
572
+ html[data-dragging-cursor="true"] *::before,
573
+ html[data-dragging-cursor="true"] *::after {
478
574
  cursor: grabbing !important;
479
575
  }
package/src/date.css CHANGED
@@ -4,11 +4,11 @@
4
4
  padding: var(--ax-space-16);
5
5
 
6
6
  .rdp-table {
7
- border-collapse: separate; /* Some CSS-resets sets border-collapse:collapse on tables */
7
+ border-collapse: collapse;
8
8
  }
9
9
 
10
10
  .rdp-cell {
11
- padding: 1px; /* Some CSS-resets sets padding:0 on all items */
11
+ padding: 0;
12
12
 
13
13
  &[data-outside="true"] {
14
14
  width: var(--__axc-date-button-size);
@@ -23,18 +23,22 @@
23
23
  }
24
24
 
25
25
  .rdp-day_range_middle {
26
- &.rdp-day_disabled {
26
+ &.rdp-day_disabled .rdp-day__inner {
27
27
  color: var(--ax-text-neutral);
28
28
  background: var(--ax-bg-neutral-moderateA);
29
29
  }
30
30
 
31
- &.rdp-day_selected {
31
+ &.rdp-day_selected .rdp-day__inner {
32
32
  background-color: var(--ax-bg-moderate-pressedA);
33
33
  box-shadow: inset 0 0 0 1px var(--ax-border-subtleA);
34
34
  color: var(--ax-text-neutral);
35
35
  }
36
36
  }
37
37
 
38
+ .rdp-button.rdp-day__range-hover-middle .rdp-day__inner {
39
+ background-color: var(--ax-bg-moderate-hoverA);
40
+ }
41
+
38
42
  .rdp-month,
39
43
  &.rdp-month {
40
44
  display: grid;
@@ -52,22 +56,30 @@
52
56
 
53
57
  .rdp-button {
54
58
  all: unset;
55
- display: block;
56
- width: var(--__axc-date-button-size);
57
- height: var(--__axc-date-button-size);
58
- text-align: center;
59
+ padding: var(--ax-space-2);
60
+ cursor: pointer;
61
+
62
+ & .rdp-day__inner {
63
+ width: var(--__axc-date-button-size);
64
+ height: var(--__axc-date-button-size);
65
+ }
66
+ }
67
+
68
+ .rdp-day__inner {
69
+ display: grid;
70
+ place-items: center;
59
71
  border-radius: var(--ax-radius-8);
60
72
  }
61
73
 
62
- .rdp-day_range_start {
74
+ .rdp-day_range_start .rdp-day__inner {
63
75
  border-radius: 100% var(--ax-radius-12) var(--ax-radius-12) 100%;
64
76
  }
65
77
 
66
- .rdp-day_range_end:not(.rdp-day_range_start) {
78
+ .rdp-day_range_end:not(.rdp-day_range_start) .rdp-day__inner {
67
79
  border-radius: var(--ax-radius-8) 100% 100% var(--ax-radius-8);
68
80
  }
69
81
 
70
- .rdp-day_range_start.rdp-day_range_end {
82
+ .rdp-day_range_start.rdp-day_range_end .rdp-day__inner {
71
83
  border-radius: var(--ax-radius-8);
72
84
  }
73
85
 
@@ -78,24 +90,23 @@
78
90
  position: relative;
79
91
  }
80
92
 
81
- .rdp-day_selected,
82
- .aksel-monthpicker__month--selected {
93
+ .rdp-day_selected .rdp-day__inner {
83
94
  color: var(--ax-text-contrast);
84
95
  background: var(--ax-bg-strong-pressed);
85
- cursor: pointer;
86
96
  }
87
97
 
88
- .rdp-day_disabled {
98
+ .rdp-day_disabled .rdp-day__inner {
89
99
  cursor: not-allowed;
90
- text-decoration: line-through;
91
100
  background-color: var(--ax-bg-neutral-moderateA);
92
101
  color: var(--ax-text-neutral-subtle);
102
+ opacity: var(--ax-opacity-disabled);
93
103
  }
94
104
 
95
105
  .rdp-button:where(:not(.rdp-day_selected, [disabled])):hover,
96
106
  .aksel-date__month-button:where(:not(.rdp-day_selected, [disabled])):hover {
97
- background: var(--ax-bg-moderate-hoverA);
98
- cursor: pointer;
107
+ .rdp-day__inner {
108
+ background: var(--ax-bg-moderate-hoverA);
109
+ }
99
110
  }
100
111
 
101
112
  .rdp-day_today {
@@ -154,7 +165,7 @@
154
165
  justify-content: space-between;
155
166
  align-items: center;
156
167
  gap: var(--ax-space-4);
157
- padding-inline: var(--ax-space-4);
168
+ padding-inline: var(--ax-space-2);
158
169
  }
159
170
 
160
171
  .aksel-date__caption-button {
@@ -167,15 +178,17 @@
167
178
  text-transform: capitalize;
168
179
  }
169
180
 
170
- /* Monthpicker */
181
+ /* MonthPicker */
171
182
  .aksel-date__month-button {
172
183
  all: unset;
173
- text-align: center;
174
- width: 3rem;
175
- height: 3rem;
176
- text-transform: capitalize;
177
- border-radius: var(--ax-radius-8);
184
+ padding: var(--ax-space-2);
178
185
  cursor: pointer;
186
+
187
+ & .rdp-day__inner {
188
+ width: 3rem;
189
+ height: 3rem;
190
+ text-transform: capitalize;
191
+ }
179
192
  }
180
193
 
181
194
  .aksel-date__year-label {
@@ -190,12 +203,12 @@
190
203
 
191
204
  .rdp-cell > button.rdp-day,
192
205
  button.aksel-date__month-button {
193
- &:focus-visible {
206
+ &:focus-visible .rdp-day__inner {
194
207
  outline: 3px solid var(--ax-border-focus);
195
208
  outline-offset: 3px;
196
209
  }
197
210
 
198
- &:active:not(:disabled) {
211
+ &:active:not(:disabled) .rdp-day__inner {
199
212
  color: var(--ax-text-contrast);
200
213
  background-color: var(--ax-bg-strong-pressed);
201
214
  }
@@ -92,6 +92,12 @@
92
92
  border: var(--__axc-radio-checkbox-marker-border) solid var(--ax-border-neutral);
93
93
  border-radius: var(--ax-radius-4);
94
94
  position: relative;
95
+
96
+ &[data-standalone="true"]:disabled,
97
+ .aksel-checkbox__input-wrapper[data-standalone="true"] > &:disabled {
98
+ opacity: var(--ax-opacity-disabled);
99
+ cursor: not-allowed;
100
+ }
95
101
  }
96
102
 
97
103
  /* Visible marker */
package/src/modal.css CHANGED
@@ -49,13 +49,7 @@
49
49
  left: 0;
50
50
  }
51
51
 
52
- .aksel-modal--medium {
53
- width: 700px;
54
- }
55
-
56
52
  .aksel-modal--small {
57
- width: 450px;
58
-
59
53
  & .aksel-modal__header {
60
54
  padding: var(--ax-space-12) var(--ax-space-16);
61
55
  }
@@ -70,6 +64,14 @@
70
64
  }
71
65
  }
72
66
 
67
+ .aksel-modal--width-medium {
68
+ width: 700px;
69
+ }
70
+
71
+ .aksel-modal--width-small {
72
+ width: 450px;
73
+ }
74
+
73
75
  @media (min-width: 480px) {
74
76
  .aksel-modal {
75
77
  max-width: calc(100% - 2em);
@@ -2,6 +2,7 @@
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  min-height: 100vh;
5
+ /* biome-ignore lint/suspicious/noDuplicateProperties: vh is fallback for browsers that do not support lvh */
5
6
  min-height: 100lvh;
6
7
  }
7
8
 
@@ -19,6 +20,7 @@
19
20
 
20
21
  .aksel-page__content--fullheight {
21
22
  min-height: 100vh;
23
+ /* biome-ignore lint/suspicious/noDuplicateProperties: vh is fallback for browsers that do not support lvh */
22
24
  min-height: 100lvh;
23
25
  }
24
26
 
package/src/skeleton.css CHANGED
@@ -27,9 +27,7 @@
27
27
 
28
28
  .aksel-skeleton--text {
29
29
  height: auto;
30
- transform-origin: 0 55%;
31
- transform: scale(1, 0.6);
32
- border-radius: var(--ax-radius-8);
30
+ clip-path: inset(20% 0 round var(--ax-radius-4));
33
31
 
34
32
  &:empty::before {
35
33
  content: "\00a0";
package/src/table.css CHANGED
@@ -278,6 +278,12 @@
278
278
  border-bottom: 1px solid var(--ax-border-neutral-subtleA);
279
279
  }
280
280
 
281
+ .aksel-table__expandable-row {
282
+ &:has(+ .aksel-table__expanded-row[data-state="closed"] + .aksel-table__row--selected) > :is(th, td) {
283
+ border-color: var(--ax-border-default);
284
+ }
285
+ }
286
+
281
287
  .aksel-table__expanded-row {
282
288
  &:has(+ .aksel-table__row--selected) {
283
289
  & .aksel-table__expanded-row-collapse {
package/src/timeline.css CHANGED
@@ -41,6 +41,17 @@
41
41
  background: var(--ax-bg-neutral-softA);
42
42
  margin: var(--ax-space-16) 0;
43
43
  grid-column: 2;
44
+
45
+ &:focus {
46
+ outline: none;
47
+ }
48
+
49
+ @media (forced-colors: active) {
50
+ &:focus {
51
+ outline: 1px solid highlight;
52
+ outline-offset: -1px;
53
+ }
54
+ }
44
55
  }
45
56
 
46
57
  .aksel-timeline__row--active {
@@ -73,6 +84,7 @@
73
84
  }
74
85
 
75
86
  .aksel-timeline__period {
87
+ container-type: inline-size;
76
88
  height: 100%;
77
89
  border-radius: var(--ax-radius-full);
78
90
  position: absolute;
@@ -98,7 +110,7 @@
98
110
  }
99
111
 
100
112
  .aksel-timeline__period--inner {
101
- margin: 0 var(--ax-space-8);
113
+ margin: 0 clamp(var(--ax-space-4), 17cqi, var(--ax-space-8));
102
114
  overflow: hidden;
103
115
  white-space: nowrap;
104
116
  text-overflow: clip;
@@ -108,7 +120,13 @@
108
120
  }
109
121
 
110
122
  .aksel-timeline__period--inner svg {
111
- flex-shrink: 0;
123
+ flex-shrink: 1;
124
+ }
125
+
126
+ @container (inline-size < 1.4rem) {
127
+ .aksel-timeline__period--inner {
128
+ margin: 0 10cqi;
129
+ }
112
130
  }
113
131
 
114
132
  .aksel-timeline__period--clickable {