@scania/tegel-lite 0.0.3-rules-beta.7 → 0.1.0-tl-header-test

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 (38) hide show
  1. package/README.md +0 -29
  2. package/dist/assets/icons/scania/microphone.svg +4 -0
  3. package/dist/assets/icons/scania/microphone_inactive.svg +7 -0
  4. package/dist/assets/icons/scania/notification_snooze.svg +6 -0
  5. package/dist/assets/icons/scania/paperclip.svg +3 -0
  6. package/dist/components.css +2027 -1798
  7. package/dist/global.css +3 -2
  8. package/dist/scania-variables.css +8 -0
  9. package/dist/tl-button.css +19 -0
  10. package/dist/tl-dropdown.css +36 -1
  11. package/dist/tl-folder-tabs.css +64 -0
  12. package/dist/tl-header.css +206 -50
  13. package/dist/tl-icon.css +16 -0
  14. package/dist/tl-inline-tabs.css +81 -0
  15. package/dist/tl-navigation-tabs.css +81 -0
  16. package/dist/tl-slider.css +1024 -1485
  17. package/dist/tl-text-field.css +32 -13
  18. package/package.json +3 -14
  19. package/.ai/rules/01-design-tokens.mdc +0 -318
  20. package/.ai/rules/02-components-forms.mdc +0 -396
  21. package/.ai/rules/03-components-display.mdc +0 -474
  22. package/.ai/rules/04-components-navigation.mdc +0 -358
  23. package/.ai/rules/05-guidelines.mdc +0 -144
  24. package/.ai/rules/06-patterns.mdc +0 -352
  25. package/.cursor/rules/tegel-lite/01-design-tokens.mdc +0 -317
  26. package/.cursor/rules/tegel-lite/02-components-forms.mdc +0 -395
  27. package/.cursor/rules/tegel-lite/03-components-display.mdc +0 -473
  28. package/.cursor/rules/tegel-lite/04-components-navigation.mdc +0 -357
  29. package/.cursor/rules/tegel-lite/05-guidelines.mdc +0 -143
  30. package/.cursor/rules/tegel-lite/06-patterns.mdc +0 -351
  31. package/.github/copilot-instructions.md +0 -2045
  32. package/AGENTS.md +0 -2045
  33. package/CLAUDE.md +0 -2045
  34. package/bin/setup-ai-rules.js +0 -368
  35. package/dist/tl-folder-tab.css +0 -87
  36. package/dist/tl-inline-tab.css +0 -80
  37. package/dist/tl-navigation-tab.css +0 -114
  38. package/dist/tl-textarea-mixins.css +0 -0
package/dist/global.css CHANGED
@@ -5884,10 +5884,10 @@ tds-message {
5884
5884
  --tds-stepper-icon-step-border-color-warning: var(--tds-red-400);
5885
5885
  --tds-stepper-icon-step-border-color-success: var(--tds-green-400);
5886
5886
  --tds-stepper-icon-step-background-success: var(--tds-green-400);
5887
- --tds-stepper-icon-step-border-color-current: var(--tds-grey-950);
5887
+ --tds-stepper-icon-step-border-color-current: var(--tds-grey-750);
5888
5888
  --tds-stepper-label-text-color-upcoming: var(--tds-blue-950);
5889
5889
  --tds-stepper-label-border-color-upcoming: var(--tds-blue-750);
5890
- --tds-stepper-divider-line: var(--tds-grey-700);
5890
+ --tds-stepper-divider-line: var(--tds-grey-750);
5891
5891
  }
5892
5892
 
5893
5893
  .tds-mode-dark {
@@ -5897,6 +5897,7 @@ tds-message {
5897
5897
  --tds-stepper-icon-step-border-color-warning: var(--tds-red-300);
5898
5898
  --tds-stepper-icon-step-border-color-success: var(--tds-green-300);
5899
5899
  --tds-stepper-icon-step-background-success: var(--tds-green-300);
5900
+ --tds-stepper-icon-step-border-color-current: var(--tds-grey-150);
5900
5901
  --tds-stepper-label-text-color-upcoming: var(--tds-grey-50);
5901
5902
  --tds-stepper-label-border-color-upcoming: var(--tds-grey-150);
5902
5903
  --tds-stepper-divider-line: var(--tds-grey-250);
@@ -1345,6 +1345,8 @@ h6 {
1345
1345
  --scania-icon-merge-svg: url(./assets/icons/scania/merge.svg);
1346
1346
  --scania-icon-message_inactive-svg: url(./assets/icons/scania/message_inactive.svg);
1347
1347
  --scania-icon-message-svg: url(./assets/icons/scania/message.svg);
1348
+ --scania-icon-microphone_inactive-svg: url(./assets/icons/scania/microphone_inactive.svg);
1349
+ --scania-icon-microphone-svg: url(./assets/icons/scania/microphone.svg);
1348
1350
  --scania-icon-mileage_inactive-svg: url(./assets/icons/scania/mileage_inactive.svg);
1349
1351
  --scania-icon-mileage-svg: url(./assets/icons/scania/mileage.svg);
1350
1352
  --scania-icon-minimize_fullscreen-svg: url(./assets/icons/scania/minimize_fullscreen.svg);
@@ -1352,9 +1354,11 @@ h6 {
1352
1354
  --scania-icon-navigate_inactive-svg: url(./assets/icons/scania/navigate_inactive.svg);
1353
1355
  --scania-icon-navigate-svg: url(./assets/icons/scania/navigate.svg);
1354
1356
  --scania-icon-notification_inactive-svg: url(./assets/icons/scania/notification_inactive.svg);
1357
+ --scania-icon-notification_snooze-svg: url(./assets/icons/scania/notification_snooze.svg);
1355
1358
  --scania-icon-notification-svg: url(./assets/icons/scania/notification.svg);
1356
1359
  --scania-icon-oil_level_inactive-svg: url(./assets/icons/scania/oil_level_inactive.svg);
1357
1360
  --scania-icon-oil_level-svg: url(./assets/icons/scania/oil_level.svg);
1361
+ --scania-icon-paperclip-svg: url(./assets/icons/scania/paperclip.svg);
1358
1362
  --scania-icon-pause_inactive-svg: url(./assets/icons/scania/pause_inactive.svg);
1359
1363
  --scania-icon-pause-svg: url(./assets/icons/scania/pause.svg);
1360
1364
  --scania-icon-phone_inactive-svg: url(./assets/icons/scania/phone_inactive.svg);
@@ -1601,6 +1605,8 @@ h6 {
1601
1605
  --icon-merge-svg: var(--scania-icon-merge-svg);
1602
1606
  --icon-message_inactive-svg: var(--scania-icon-message_inactive-svg);
1603
1607
  --icon-message-svg: var(--scania-icon-message-svg);
1608
+ --icon-microphone_inactive-svg: var(--scania-icon-microphone_inactive-svg);
1609
+ --icon-microphone-svg: var(--scania-icon-microphone-svg);
1604
1610
  --icon-mileage_inactive-svg: var(--scania-icon-mileage_inactive-svg);
1605
1611
  --icon-mileage-svg: var(--scania-icon-mileage-svg);
1606
1612
  --icon-minimize_fullscreen-svg: var(--scania-icon-minimize_fullscreen-svg);
@@ -1608,9 +1614,11 @@ h6 {
1608
1614
  --icon-navigate_inactive-svg: var(--scania-icon-navigate_inactive-svg);
1609
1615
  --icon-navigate-svg: var(--scania-icon-navigate-svg);
1610
1616
  --icon-notification_inactive-svg: var(--scania-icon-notification_inactive-svg);
1617
+ --icon-notification_snooze-svg: var(--scania-icon-notification_snooze-svg);
1611
1618
  --icon-notification-svg: var(--scania-icon-notification-svg);
1612
1619
  --icon-oil_level_inactive-svg: var(--scania-icon-oil_level_inactive-svg);
1613
1620
  --icon-oil_level-svg: var(--scania-icon-oil_level-svg);
1621
+ --icon-paperclip-svg: var(--scania-icon-paperclip-svg);
1614
1622
  --icon-pause_inactive-svg: var(--scania-icon-pause_inactive-svg);
1615
1623
  --icon-pause-svg: var(--scania-icon-pause-svg);
1616
1624
  --icon-phone_inactive-svg: var(--scania-icon-phone_inactive-svg);
@@ -1,3 +1,22 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+ .tl-button,
5
+ tds-button,
6
+ .tds-mode-light tds-button {
7
+ --component-button-primary-text: var(--color-brand-neutral-white);
8
+ }
9
+
10
+ .scania .tds-mode-dark tds-button,
11
+ .scania .tds-mode-dark .tl-button {
12
+ --component-button-primary-text: var(--color-brand-neutral-white);
13
+ }
14
+
15
+ .tds-mode-dark tds-button,
16
+ .tds-mode-dark .tl-button {
17
+ --component-button-primary-text: var(--color-brand-neutral-black);
18
+ }
19
+
1
20
  .tl-button {
2
21
  --button-transparent: transparent;
3
22
  --button-white: var(--color-brand-neutral-white);
@@ -166,7 +166,6 @@ body {
166
166
 
167
167
  .tl-dropdown__select {
168
168
  padding-top: 2px;
169
- padding-left: calc(var(--tds-spacing-element-16) - 1px);
170
169
  cursor: pointer;
171
170
  display: block;
172
171
  }
@@ -286,6 +285,10 @@ body {
286
285
  transition: transform 0.2s;
287
286
  }
288
287
 
288
+ .tl-dropdown--lg:not(.tl-dropdown--label-inside):has(.tl-dropdown__select:disabled):not(:has(.tl-dropdown__helper))::after {
289
+ background-color: var(--dropdown-disabled);
290
+ }
291
+
289
292
  .tl-dropdown--md:not(.tl-dropdown--label-inside):has(.tl-dropdown__select):not(:has(.tl-dropdown__helper))::after {
290
293
  content: "";
291
294
  position: absolute;
@@ -303,6 +306,10 @@ body {
303
306
  transition: transform 0.2s;
304
307
  }
305
308
 
309
+ .tl-dropdown--md:not(.tl-dropdown--label-inside):has(.tl-dropdown__select:disabled):not(:has(.tl-dropdown__helper))::after {
310
+ background-color: var(--dropdown-disabled);
311
+ }
312
+
306
313
  .tl-dropdown--sm:not(.tl-dropdown--label-inside):has(.tl-dropdown__select):not(:has(.tl-dropdown__helper))::after {
307
314
  content: "";
308
315
  position: absolute;
@@ -320,6 +327,10 @@ body {
320
327
  transition: transform 0.2s;
321
328
  }
322
329
 
330
+ .tl-dropdown--sm:not(.tl-dropdown--label-inside):has(.tl-dropdown__select:disabled):not(:has(.tl-dropdown__helper))::after {
331
+ background-color: var(--dropdown-disabled);
332
+ }
333
+
323
334
  .tl-dropdown:not(.tl-dropdown--label-inside):has(.tl-dropdown__label):has(:is(.tl-dropdown__button, .tl-dropdown__input)) .tl-dropdown__button::after,
324
335
  .tl-dropdown:not(.tl-dropdown--label-inside):has(.tl-dropdown__label):has(:is(.tl-dropdown__button, .tl-dropdown__input)) .tl-dropdown__input-wrapper::after {
325
336
  top: calc(50% + 1px);
@@ -342,6 +353,10 @@ body {
342
353
  transition: transform 0.2s;
343
354
  }
344
355
 
356
+ .tl-dropdown--label-inside:has(.tl-dropdown__select:disabled):not(:has(.tl-dropdown__helper))::after {
357
+ background-color: var(--dropdown-disabled);
358
+ }
359
+
345
360
  .tl-dropdown:not(:has(.tl-dropdown__label)):has(.tl-dropdown__select):not(:has(.tl-dropdown__helper))::after {
346
361
  content: "";
347
362
  position: absolute;
@@ -359,6 +374,10 @@ body {
359
374
  transition: transform 0.2s;
360
375
  }
361
376
 
377
+ .tl-dropdown:not(:has(.tl-dropdown__label)):has(.tl-dropdown__select:disabled):not(:has(.tl-dropdown__helper))::after {
378
+ background-color: var(--dropdown-disabled);
379
+ }
380
+
362
381
  .tl-dropdown--label-inside:has(.tl-dropdown__select):has(.tl-dropdown__helper)::after {
363
382
  content: "";
364
383
  position: absolute;
@@ -376,6 +395,10 @@ body {
376
395
  transition: transform 0.2s;
377
396
  }
378
397
 
398
+ .tl-dropdown--label-inside:has(.tl-dropdown__select:disabled):has(.tl-dropdown__helper)::after {
399
+ background-color: var(--dropdown-disabled);
400
+ }
401
+
379
402
  .tl-dropdown:not(:has(.tl-dropdown__label)):has(.tl-dropdown__select):has(.tl-dropdown__helper)::after {
380
403
  content: "";
381
404
  position: absolute;
@@ -393,6 +416,10 @@ body {
393
416
  transition: transform 0.2s;
394
417
  }
395
418
 
419
+ .tl-dropdown:not(:has(.tl-dropdown__label)):has(.tl-dropdown__select:disabled):has(.tl-dropdown__helper)::after {
420
+ background-color: var(--dropdown-disabled);
421
+ }
422
+
396
423
  .tl-dropdown:not(.tl-dropdown--label-inside):has(.tl-dropdown__label):has(.tl-dropdown__select):has(.tl-dropdown__helper)::after {
397
424
  content: "";
398
425
  position: absolute;
@@ -410,6 +437,10 @@ body {
410
437
  transition: transform 0.2s;
411
438
  }
412
439
 
440
+ .tl-dropdown:not(.tl-dropdown--label-inside):has(.tl-dropdown__label):has(.tl-dropdown__select:disabled):has(.tl-dropdown__helper)::after {
441
+ background-color: var(--dropdown-disabled);
442
+ }
443
+
413
444
  .tl-dropdown--md:not(.tl-dropdown--label-inside):has(.tl-dropdown__label):has(.tl-dropdown__select):has(.tl-dropdown__helper)::after {
414
445
  top: calc(50% + 1px);
415
446
  }
@@ -763,6 +794,10 @@ body {
763
794
  transition: box-shadow 0.2s;
764
795
  }
765
796
 
797
+ .tl-dropdown:has(.tl-dropdown__select option[value=""]:checked) .tl-dropdown__select {
798
+ padding-top: 3px;
799
+ }
800
+
766
801
  .tl-dropdown:has(.tl-dropdown__select option[value=""]:checked) .tl-dropdown__select:disabled {
767
802
  color: var(--dropdown-disabled);
768
803
  cursor: not-allowed;
@@ -24,6 +24,70 @@
24
24
  --folder-tab-surface-selected: var(--color-background-layer-02);
25
25
  }
26
26
 
27
+ /* tl-folder-tabs.scss (overlay buttons, no JS) */
28
+ /* Typography Usage mixins */
29
+ .tl-folder-tabs__tab {
30
+ all: unset;
31
+ font-family: var(--headline-07-font-family);
32
+ font-size: var(--headline-07-font-size);
33
+ line-height: var(--headline-07-line-height);
34
+ font-weight: var(--headline-07-font-weight);
35
+ letter-spacing: var(--headline-07-letter-spacing);
36
+ text-transform: var(--headline-07-text-transform);
37
+ box-sizing: border-box;
38
+ position: relative;
39
+ display: inline-flex;
40
+ align-items: center;
41
+ min-inline-size: 142px;
42
+ inline-size: auto;
43
+ flex: 0 0 auto;
44
+ white-space: nowrap;
45
+ padding: 16px;
46
+ text-align: left;
47
+ cursor: pointer;
48
+ border-left: 1px solid transparent;
49
+ border-top: 2px solid var(--folder-tab-surface);
50
+ background-color: var(--folder-tab-surface);
51
+ color: var(--folder-tab-text);
52
+ }
53
+ .tl-folder-tabs__tab + .tl-folder-tabs__tab {
54
+ border-left-color: var(--folder-tab-divider);
55
+ }
56
+ .tl-folder-tabs__tab:focus-visible {
57
+ outline: 2px solid currentcolor;
58
+ outline-offset: -4px;
59
+ box-shadow: none;
60
+ }
61
+ .tl-folder-tabs__tab:hover:not(.tl-folder-tabs__tab--disabled):not(.tl-folder-tabs__tab--selected) {
62
+ background-color: var(--folder-tab-surface-hover);
63
+ border-top-color: var(--folder-tab-surface-hover);
64
+ color: var(--folder-tab-text);
65
+ }
66
+ .tl-folder-tabs__tab--selected {
67
+ background-color: var(--folder-tab-surface-selected);
68
+ border-top-color: var(--folder-tab-border-selected);
69
+ color: var(--folder-tab-text);
70
+ }
71
+ .tl-folder-tabs__tab--selected::after {
72
+ content: "";
73
+ position: absolute;
74
+ top: 0;
75
+ right: -1px;
76
+ bottom: 0;
77
+ width: 1px;
78
+ background-color: var(--folder-tab-surface-selected);
79
+ z-index: 1;
80
+ }
81
+ .tl-folder-tabs__tab--disabled {
82
+ color: var(--folder-tab-text-disabled);
83
+ cursor: not-allowed;
84
+ user-select: none;
85
+ }
86
+ .tl-folder-tabs__tab--disabled:focus-visible {
87
+ outline: none;
88
+ box-shadow: none;
89
+ }
90
+
27
91
  .tl-folder-tabs {
28
92
  box-sizing: border-box;
29
93
  }
@@ -1,11 +1,116 @@
1
1
  @charset "UTF-8";
2
+ /**
3
+ * Do not edit directly, this file was auto-generated.
4
+ */
5
+ .scania tds-header,
6
+ .scania .tl-header {
7
+ /* State & interaction colors */
8
+ --component-header-color-background-open: var(--color-foreground-border-accent-focus);
9
+ --component-header-color-foreground-selected: var(--color-foreground-icon-strong);
10
+ --component-header-dropdown-item-background: var(--color-background-layer-02);
11
+ --component-header-avatar-item-background: var(--color-background-layer-02);
12
+ --component-header-app-launcher-meny-background: var(--color-background-layer-02);
13
+ /* Sizing & spacing */
14
+ --component-header-brand-logo-size: 30px;
15
+ --component-header-space-profile-padding: 16px;
16
+ --component-header-item-image-size: 34px;
17
+ --component-header-item-image-left: 10px;
18
+ --component-header-item-width: none;
19
+ --component-header-item-border-right: 1px solid var(--header-basic-element-border);
20
+ /* Borders */
21
+ --component-header-border: none;
22
+ /* Typography */
23
+ --component-header-font-family-headline: var(--scania-font-family-display);
24
+ --component-header-font-weight: var(--scania-font-weight-regular);
25
+ --component-header-text-transform: none;
26
+ }
27
+ .scania {
28
+ /* ── Light-mode overrides ───────────────────── */
29
+ }
30
+ .scania .tds-mode-light tds-header,
31
+ .scania .tds-mode-light .tl-header {
32
+ --component-header-color-background: var(--color-brand-primary-800);
33
+ --component-header-color-foreground-strong: var(--color-foreground-icon-inverse-strong);
34
+ --component-header-color-background-hover: var(--color-brand-primary-700);
35
+ --component-header-color-background-border: var(--color-brand-primary-700);
36
+ --component-header-color-background-pressed: var(--color-brand-neutral-white);
37
+ --component-header-color-background-selected: var(--color-brand-primary-700);
38
+ }
39
+ .scania {
40
+ /* ── Dark-mode overrides ───────────────────── */
41
+ }
42
+ .scania .tds-mode-dark tds-header,
43
+ .scania .tds-mode-dark .tl-header {
44
+ --component-header-color-background: var(--color-brand-primary-900);
45
+ --component-header-color-foreground-strong: var(--color-foreground-icon-strong);
46
+ --component-header-color-background-hover: var(--color-brand-primary-800);
47
+ --component-header-color-background-border: var(--color-brand-primary-800);
48
+ --component-header-color-background-pressed: var(--color-brand-primary-800);
49
+ --component-header-color-background-selected: var(--color-brand-primary-800);
50
+ }
51
+
52
+ .traton tds-header,
53
+ .traton .tl-header {
54
+ /* Base colors */
55
+ --component-header-color-background: var(--color-background-base);
56
+ --component-header-color-background-hover: var(--color-background-layer-01);
57
+ --component-header-color-background-open: transparent;
58
+ --component-header-color-foreground-strong: var(--color-foreground-icon-strong);
59
+ --component-header-color-background-border: var(--traton-color-transparent-invisible-light);
60
+ --component-header-color-background-pressed: var(--color-background-base);
61
+ --component-header-color-foreground-selected: var(--color-foreground-icon-strong);
62
+ /* Dropdown & launcher */
63
+ --component-header-dropdown-item-background: var(--color-background-layer-01);
64
+ --component-header-avatar-item-background: var(--color-background-layer-01);
65
+ --component-header-app-launcher-meny-background: var(--color-background-layer-01);
66
+ /* Sizing & spacing */
67
+ --component-header-brand-logo-size: 106px;
68
+ --component-header-space-profile-padding: 20px;
69
+ --component-header-item-image-size: 24px;
70
+ --component-header-item-image-left: 15px;
71
+ --component-header-item-width: 122px;
72
+ --component-header-item-border-right: none;
73
+ /* Borders */
74
+ --component-header-border: 2px solid var(--header-nav-item-border-active);
75
+ /* Typography */
76
+ --component-header-font-family-headline: var(--traton-font-family-display);
77
+ --component-header-font-weight: var(--traton-font-weight-medium);
78
+ --component-header-text-transform: uppercase;
79
+ }
80
+ .traton {
81
+ /* ── Light-mode overrides ───────────────────── */
82
+ }
83
+ .traton .tds-mode-light tds-header,
84
+ .traton .tds-mode-light .tl-header {
85
+ --component-header-color-background-selected: var(--color-background-layer-01);
86
+ }
87
+ .traton {
88
+ /* ── Dark-mode overrides ───────────────────── */
89
+ }
90
+ .traton .tds-mode-dark tds-header,
91
+ .traton .tds-mode-dark .tl-header {
92
+ --component-header-color-background-selected: var(--color-background-surface-100);
93
+ }
94
+
95
+ /*
96
+ Tegel Lite specific overrides
97
+ Keep this in last to ensure it has the highest specificity for Tegel Lite
98
+ */
99
+ .scania .tl-header {
100
+ --component-header-item-width: 30px;
101
+ --component-header-dropdown-box-shadow: 0 3px 3px rgb(0 0 0 / 15%), 0 -1px 1px rgb(0 0 0 / 1%);
102
+ }
103
+
104
+ .traton .tl-header {
105
+ --component-header-dropdown-box-shadow: none;
106
+ }
107
+
2
108
  .tl-header {
3
- /* Base background & text */
4
- --header-background: var(--component-header-color-background);
109
+ /* Base text */
5
110
  --header-nav-item: var(--component-header-color-foreground-strong);
6
111
  /* Nav-item states */
7
112
  --header-nav-item-background-hover: var(--color-background-surface-100);
8
- --header-nav-item-background-selected: var(--color-background-surface-100);
113
+ --header-nav-item-background-selected: var(--component-header-dropdown-item-background);
9
114
  --header-nav-item-border-pressed: var(--color-foreground-border-accent-focus);
10
115
  --header-item-hover: var(--component-header-color-background-hover);
11
116
  /* Dropdown menu items */
@@ -17,11 +122,11 @@
17
122
  --tds-header-nav-item-dropdown-opened-background-selected: var(--tds-grey-100);
18
123
  --tds-header-nav-item-dropdown-opened-background-pressed: var(--tds-grey-300);
19
124
  --header-nav-item-dropdown-opened: var(--component-header-color-foreground-selected);
20
- /* Basic element (“Bento”) separators & backgrounds */
125
+ /* Basic element ("Bento") separators & backgrounds */
21
126
  --header-basic-element-border: var(--component-header-color-background-border);
22
127
  --header-basic-element-border-open: var(--component-header-color-background-open);
23
- --header-basic-element-background-pressed: var(--component-header-color-background-pressed);
24
- --header-basic-element-background-selected: var(--component-header-color-background-selected);
128
+ --header-basic-element-background-pressed: var(--component-header-dropdown-item-background);
129
+ --header-basic-element-background-selected: var(--component-header-dropdown-item-background);
25
130
  /* Avatar dropdown */
26
131
  --header-avatar-item-background: var(--component-header-avatar-item-background);
27
132
  --header-avatar-item: var(--color-foreground-text-soft);
@@ -47,25 +152,75 @@
47
152
  --header-dropdown-box-shadow: var(--component-header-dropdown-box-shadow);
48
153
  }
49
154
 
155
+ .scania {
156
+ /* Light mode - explicit light mode class */
157
+ }
158
+ .scania .tds-mode-light .tl-header {
159
+ --header-background: var(--color-brand-primary-800);
160
+ --header-nav-item: var(--color-foreground-icon-inverse-strong);
161
+ --header-item-hover: var(--color-brand-primary-700);
162
+ --header-basic-element-border: var(--color-brand-primary-700);
163
+ --header-basic-element-background-pressed: var(--color-brand-neutral-white);
164
+ --header-basic-element-background-selected: var(--color-brand-primary-700);
165
+ }
166
+ .scania {
167
+ /* Dark mode - override with dark colors */
168
+ }
169
+ .scania .tds-mode-dark .tl-header {
170
+ --header-background: var(--color-brand-primary-900);
171
+ --header-nav-item: var(--color-foreground-icon-strong);
172
+ --header-item-hover: var(--color-brand-primary-800);
173
+ --header-basic-element-border: var(--color-brand-primary-800);
174
+ --header-basic-element-background-pressed: var(--color-brand-primary-800);
175
+ --header-basic-element-background-selected: var(--color-brand-primary-800);
176
+ }
177
+ .scania {
178
+ /* Default .tl-header (works for no mode specified - defaults to light) */
179
+ }
50
180
  .scania .tl-header {
51
181
  /* Brand logo */
52
182
  --header-logotype-local: var(--tds-background-image-scania-symbol-svg-local);
53
183
  --header-logotype-cdn: var(--tds-background-image-scania-symbol-svg);
54
184
  --component-header-space-profile-padding: 16px;
185
+ /* Background defaults to light mode */
186
+ --header-background: var(--color-brand-primary-800);
187
+ --header-nav-item: var(--color-foreground-icon-inverse-strong);
188
+ --header-item-hover: var(--color-brand-primary-700);
189
+ --header-basic-element-border: var(--color-brand-primary-700);
190
+ --header-basic-element-background-pressed: var(--color-brand-neutral-white);
191
+ --header-basic-element-background-selected: var(--color-brand-primary-700);
55
192
  }
56
193
 
57
194
  .traton .tds-mode-dark .tl-header {
58
- /* Brand logo */
195
+ /* Brand logo - White for dark mode */
59
196
  --header-logotype-local: var(--traton-logotype-white-svg-local);
60
197
  --header-logotype-cdn: var(--traton-logotype-white-svg);
198
+ /* Background - uses base from traton tokens */
199
+ --header-background: var(--color-background-base);
200
+ --header-nav-item: var(--color-foreground-icon-strong);
201
+ --header-item-hover: var(--color-background-layer-01);
202
+ --header-basic-element-border: var(--traton-color-transparent-invisible-light);
203
+ --header-basic-element-background-pressed: var(--color-background-base);
204
+ --header-basic-element-background-selected: var(--color-background-surface-100);
61
205
  }
62
206
  .traton .tds-mode-light .tl-header {
63
- /* Brand logo */
207
+ /* Brand logo - Black for light mode */
64
208
  --header-logotype-local: var(--traton-logotype-black-svg-local);
65
209
  --header-logotype-cdn: var(--traton-logotype-black-svg);
210
+ /* Background - uses base from traton tokens */
211
+ --header-background: var(--color-background-base);
212
+ --header-nav-item: var(--color-foreground-icon-strong);
213
+ --header-item-hover: var(--color-background-layer-01);
214
+ --header-basic-element-border: var(--traton-color-transparent-invisible-light);
215
+ --header-basic-element-background-pressed: var(--color-background-base);
216
+ --header-basic-element-background-selected: var(--color-background-layer-01);
66
217
  }
67
218
  .traton .tl-header {
219
+ /* Brand logo - Black as default (for no mode specified) */
220
+ --header-logotype-local: var(--traton-logotype-black-svg-local);
221
+ --header-logotype-cdn: var(--traton-logotype-black-svg);
68
222
  --component-header-space-profile-padding: 20px;
223
+ --header-background: transparent;
69
224
  }
70
225
 
71
226
  /* Typography Usage mixins */
@@ -105,18 +260,12 @@
105
260
  outline: none;
106
261
  box-shadow: inset 0 0 0 2px var(--color-foreground-border-accent-focus);
107
262
  }
108
- .tl-header__item--pressed .tl-header__item-wrapper {
263
+ .tl-header__item-wrapper:active {
109
264
  padding-top: 2px;
110
265
  padding-bottom: 2px;
111
266
  background-color: var(--header-basic-element-background-selected);
112
267
  box-shadow: inset 0 0 0 2px var(--header-nav-item-border-pressed);
113
268
  }
114
- .tl-header__item--selected:not(.tl-header__item--pressed) .tl-header__item-wrapper {
115
- padding-top: 4px;
116
- border-bottom-style: solid;
117
- border-bottom-width: 4px;
118
- border-bottom-color: var(--header-nav-item-border-pressed);
119
- }
120
269
 
121
270
  .tl-header__item-wrapper .tl-link__icon {
122
271
  position: relative;
@@ -165,25 +314,26 @@ body {
165
314
  outline: none;
166
315
  box-shadow: inset 0 0 0 2px var(--color-foreground-border-accent-focus);
167
316
  }
317
+ .tl-header__dropdown-wrapper:active {
318
+ background-color: var(--header-basic-element-background-selected);
319
+ box-shadow: inset 0 0 0 2px var(--color-foreground-border-accent-focus);
320
+ }
168
321
  .tl-header__dropdown-wrapper--open {
169
- background-color: var(--header-basic-element-background-pressed);
322
+ background-color: var(--component-header-color-background-pressed);
170
323
  color: var(--header-nav-item-dropdown-opened);
171
324
  position: relative;
172
325
  z-index: calc(var(--tds-z-index-header) + 1);
173
326
  }
174
327
  .tl-header__dropdown-wrapper--open:hover {
175
- background-color: var(--header-basic-element-background-pressed);
328
+ background-color: var(--component-header-color-background-pressed);
329
+ }
330
+ .tl-header__dropdown-wrapper--open:active {
331
+ background-color: var(--component-header-color-background-pressed);
332
+ box-shadow: inset 0 0 0 2px var(--color-foreground-border-accent-focus);
176
333
  }
177
334
  .tl-header__dropdown-wrapper--selected {
178
- padding-top: 4px;
179
335
  border-bottom: 4px solid var(--header-nav-item-border-pressed);
180
336
  }
181
- .tl-header__dropdown-wrapper--pressed {
182
- padding-top: 2px;
183
- padding-bottom: 2px;
184
- background-color: var(--header-basic-element-background-selected);
185
- box-shadow: inset 0 0 0 2px var(--header-nav-item-border-pressed);
186
- }
187
337
 
188
338
  .tl-header__dropdown-wrapper-user {
189
339
  all: unset;
@@ -211,28 +361,33 @@ body {
211
361
  outline: none;
212
362
  box-shadow: inset 0 0 0 2px var(--color-foreground-border-accent-focus);
213
363
  }
364
+ .tl-header__dropdown-wrapper-user:active {
365
+ background-color: var(--header-basic-element-background-selected);
366
+ box-shadow: inset 0 0 0 2px var(--color-foreground-border-accent-focus);
367
+ }
214
368
  .tl-header__dropdown-wrapper-user--open {
215
- background-color: var(--header-basic-element-background-pressed);
369
+ background-color: var(--component-header-color-background-pressed);
216
370
  color: var(--header-nav-item-dropdown-opened);
217
371
  position: relative;
218
372
  z-index: calc(var(--tds-z-index-header) + 1);
219
373
  }
220
374
  .tl-header__dropdown-wrapper-user--open:hover {
221
- background-color: var(--header-basic-element-background-pressed);
375
+ background-color: var(--component-header-color-background-pressed);
376
+ }
377
+ .tl-header__dropdown-wrapper-user--open:active {
378
+ background-color: var(--component-header-color-background-pressed);
379
+ box-shadow: inset 0 0 0 2px var(--color-foreground-border-accent-focus);
222
380
  }
223
381
  .tl-header__dropdown-wrapper-user--selected {
224
- padding-top: 4px;
225
382
  border-bottom: 4px solid var(--header-nav-item-border-pressed);
226
383
  }
227
- .tl-header__dropdown-wrapper-user--pressed {
228
- padding-top: 2px;
229
- padding-bottom: 2px;
230
- background-color: var(--header-basic-element-background-selected);
231
- box-shadow: inset 0 0 0 2px var(--header-nav-item-border-pressed);
232
- }
233
384
 
234
385
  .tl-header__dropdown-icon {
386
+ display: flex;
387
+ align-items: center;
388
+ justify-content: center;
235
389
  transition: transform 0.2s ease;
390
+ transform-origin: center center;
236
391
  }
237
392
  .tl-header__dropdown-icon--rotated {
238
393
  transform: rotate(180deg);
@@ -300,6 +455,7 @@ body {
300
455
  max-height: calc(100vh - var(--tds-header-height));
301
456
  overflow-y: auto;
302
457
  z-index: var(--tds-z-index-header);
458
+ border-radius: 4px;
303
459
  }
304
460
  .tl-header__user-menu::-webkit-scrollbar {
305
461
  width: var(--tl-scrollbar-width);
@@ -390,6 +546,7 @@ body {
390
546
  max-height: calc(100vh - var(--tds-header-height));
391
547
  overflow-y: auto;
392
548
  z-index: var(--tds-z-index-header);
549
+ border-radius: 4px;
393
550
  }
394
551
  .tl-header__launcher-menu-grid::-webkit-scrollbar {
395
552
  width: var(--tl-scrollbar-width);
@@ -466,13 +623,13 @@ body {
466
623
  }
467
624
 
468
625
  .tl-header__user-menu-header {
469
- font-family: var(--headline-07-font-family);
470
- font-size: var(--headline-07-font-size);
471
- line-height: var(--headline-07-line-height);
472
- font-weight: var(--headline-07-font-weight);
473
- letter-spacing: var(--headline-07-letter-spacing);
474
- text-transform: var(--headline-07-text-transform);
475
- color: var(--header-nav-item-dropdown-opened);
626
+ font-family: var(--detail-06-font-family);
627
+ font-size: var(--detail-06-font-size);
628
+ line-height: var(--detail-06-line-height);
629
+ font-weight: var(--detail-06-font-weight);
630
+ letter-spacing: var(--detail-06-letter-spacing);
631
+ text-transform: var(--detail-06-text-transform);
632
+ color: var(--color-foreground-text-defined);
476
633
  }
477
634
 
478
635
  .tl-header__user-menu-subheader {
@@ -506,15 +663,14 @@ body {
506
663
  .tl-header__launcher-menu-title {
507
664
  all: unset;
508
665
  box-sizing: border-box;
509
- font-family: var(--detail-04-font-family);
510
- font-size: var(--detail-04-font-size);
511
- line-height: var(--detail-04-line-height);
512
- font-weight: var(--detail-04-font-weight);
513
- letter-spacing: var(--detail-04-letter-spacing);
514
- text-transform: var(--detail-04-text-transform);
666
+ font-family: var(--text-component-title-02-font-family);
667
+ font-size: var(--text-component-title-02-font-size);
668
+ line-height: var(--text-component-title-02-line-height);
669
+ font-weight: var(--text-component-title-02-font-weight);
670
+ letter-spacing: var(--text-component-title-02-letter-spacing);
671
+ text-transform: var(--text-component-title-02-text-transform);
515
672
  background-color: var(--header-nav-dropdown-item-background);
516
673
  color: var(--header-app-launcher-grid-category-title);
517
- text-transform: uppercase;
518
674
  height: 48px;
519
675
  padding: 0 16px;
520
676
  display: flex;
@@ -539,7 +695,7 @@ body {
539
695
  letter-spacing: var(--detail-02-letter-spacing);
540
696
  text-transform: var(--detail-02-text-transform);
541
697
  background-color: var(--header-nav-dropdown-item-background);
542
- color: var(--header-nav-item-dropdown-opened);
698
+ color: var(--color-foreground-text-defined);
543
699
  }
544
700
  .tl-header__dropdown-menu-item a:hover,
545
701
  .tl-header__dropdown-menu-item button:hover {
@@ -574,8 +730,8 @@ body {
574
730
  font-weight: var(--detail-05-font-weight);
575
731
  letter-spacing: var(--detail-05-letter-spacing);
576
732
  text-transform: var(--detail-05-text-transform);
577
- background-color: var(--tds-header-app-launcher-menu-bg);
578
- color: var(--tds-header-app-launcher-grid-color);
733
+ background-color: var(--header-nav-dropdown-item-background);
734
+ color: var(--color-foreground-text-defined);
579
735
  border-radius: 4px;
580
736
  transition: background-color 150ms ease;
581
737
  }
package/dist/tl-icon.css CHANGED
@@ -632,6 +632,14 @@
632
632
  mask-image: var(--icon-message_inactive-svg);
633
633
  background-color: currentcolor;
634
634
  }
635
+ .tl-icon--microphone {
636
+ mask-image: var(--icon-microphone-svg);
637
+ background-color: currentcolor;
638
+ }
639
+ .tl-icon--microphone_inactive {
640
+ mask-image: var(--icon-microphone_inactive-svg);
641
+ background-color: currentcolor;
642
+ }
635
643
  .tl-icon--mileage {
636
644
  mask-image: var(--icon-mileage-svg);
637
645
  background-color: currentcolor;
@@ -664,6 +672,10 @@
664
672
  mask-image: var(--icon-notification_inactive-svg);
665
673
  background-color: currentcolor;
666
674
  }
675
+ .tl-icon--notification_snooze {
676
+ mask-image: var(--icon-notification_snooze-svg);
677
+ background-color: currentcolor;
678
+ }
667
679
  .tl-icon--oil_level {
668
680
  mask-image: var(--icon-oil_level-svg);
669
681
  background-color: currentcolor;
@@ -672,6 +684,10 @@
672
684
  mask-image: var(--icon-oil_level_inactive-svg);
673
685
  background-color: currentcolor;
674
686
  }
687
+ .tl-icon--paperclip {
688
+ mask-image: var(--icon-paperclip-svg);
689
+ background-color: currentcolor;
690
+ }
675
691
  .tl-icon--pause {
676
692
  mask-image: var(--icon-pause-svg);
677
693
  background-color: currentcolor;