@scania/tegel-lite 0.0.1-beta.0 → 0.0.1-beta.10

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.
@@ -61,13 +61,13 @@
61
61
  .tl-textarea--no-min-width {
62
62
  min-width: auto;
63
63
  }
64
- .tl-textarea--disabled {
65
- pointer-events: none;
64
+ .tl-textarea:has(.tl-textarea__input:disabled) {
65
+ cursor: not-allowed;
66
66
  }
67
- .tl-textarea--readonly:not(.tl-textarea--disabled):not(.tl-textarea--hide-readonly-icon)::before {
67
+ .tl-textarea:has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)):not(.tl-textarea--hide-readonly-icon)::before {
68
68
  content: "";
69
69
  position: absolute;
70
- top: 19px;
70
+ top: 18px;
71
71
  right: 18px;
72
72
  width: 16px;
73
73
  height: 16px;
@@ -78,14 +78,27 @@
78
78
  mask-position: center;
79
79
  z-index: 1;
80
80
  }
81
- .tl-textarea:not(.tl-textarea--label-inside).tl-textarea--readonly:not(.tl-textarea--disabled):not(.tl-textarea--hide-readonly-icon)::before {
81
+ .traton .tl-textarea:has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)):not(.tl-textarea--hide-readonly-icon)::before {
82
+ top: 20px;
83
+ right: 16px;
84
+ }
85
+ .tl-textarea:not(.tl-textarea--label-inside):has(.tl-textarea__label):has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)):not(.tl-textarea--hide-readonly-icon)::before {
86
+ top: 42px;
87
+ }
88
+ .traton .tl-textarea:not(.tl-textarea--label-inside):has(.tl-textarea__label):has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)):not(.tl-textarea--hide-readonly-icon)::before {
82
89
  top: 44px;
83
90
  }
91
+ .tl-textarea:not(.tl-textarea--label-inside):not(:has(.tl-textarea__label)):has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)):not(.tl-textarea--hide-readonly-icon)::before {
92
+ top: 17px;
93
+ }
94
+ .traton .tl-textarea:not(.tl-textarea--label-inside):not(:has(.tl-textarea__label)):has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)):not(.tl-textarea--hide-readonly-icon)::before {
95
+ top: 19px;
96
+ }
84
97
  .tl-textarea::after {
85
98
  content: "";
86
99
  position: absolute;
87
- bottom: 5px;
88
- right: 2px;
100
+ bottom: 3px;
101
+ right: 3px;
89
102
  width: 12px;
90
103
  height: 12px;
91
104
  background-color: var(--textarea-resize-icon);
@@ -97,14 +110,14 @@
97
110
  z-index: 1;
98
111
  }
99
112
  .traton .tl-textarea::after {
100
- bottom: 7px;
113
+ bottom: 5px;
101
114
  right: 4px;
102
115
  }
103
116
  .tl-textarea:not(.tl-textarea--label-inside)::after {
104
- bottom: 7px;
117
+ bottom: 5px;
105
118
  }
106
119
  .traton .tl-textarea:not(.tl-textarea--label-inside)::after {
107
- bottom: 9px;
120
+ bottom: 5px;
108
121
  }
109
122
  .tl-textarea:has(.tl-textarea__bottom)::after {
110
123
  bottom: 25px;
@@ -112,7 +125,7 @@
112
125
  .traton .tl-textarea:has(.tl-textarea__bottom)::after {
113
126
  bottom: 27px;
114
127
  }
115
- .tl-textarea--disabled::after {
128
+ .tl-textarea :has(.tl-textarea__input:disabled)::after {
116
129
  background-color: var(--color-foreground-text-disabled);
117
130
  }
118
131
 
@@ -165,7 +178,7 @@
165
178
  .tl-textarea__input::-webkit-resizer {
166
179
  display: none;
167
180
  }
168
- .tl-textarea:hover .tl-textarea__input:not(:focus) {
181
+ .tl-textarea:hover .tl-textarea__input:not(:focus):not(:disabled) {
169
182
  box-shadow: inset var(--textarea-box-shadow-hover);
170
183
  }
171
184
  .tl-textarea--error .tl-textarea__input {
@@ -174,25 +187,27 @@
174
187
  .tl-textarea--error .tl-textarea__input:focus {
175
188
  box-shadow: inset var(--textarea-box-shadow-error-focus);
176
189
  }
177
- .tl-textarea--error:hover .tl-textarea__input:not(:focus) {
190
+ .tl-textarea--error:hover .tl-textarea__input:not(:focus):not(:disabled) {
178
191
  box-shadow: inset var(--textarea-box-shadow-error-hover);
179
192
  }
180
- .tl-textarea--success:not(.tl-textarea--readonly):not(.tl-textarea--disabled) .tl-textarea__input:not(:focus) {
193
+ .tl-textarea--success:not(:has(.tl-textarea__input[readonly])):not(:has(.tl-textarea__input:disabled)) .tl-textarea__input:not(:focus) {
181
194
  box-shadow: inset var(--textarea-box-shadow-success);
182
195
  }
183
- .tl-textarea--readonly .tl-textarea__input {
196
+ .tl-textarea__input:disabled {
197
+ box-shadow: none;
198
+ color: var(--textarea-text-disabled);
199
+ cursor: not-allowed;
200
+ pointer-events: none;
201
+ }
202
+ :has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)) .tl-textarea__input {
184
203
  box-shadow: inset var(--textarea-box-shadow);
185
204
  }
186
- .tl-textarea--readonly .tl-textarea__input:focus {
205
+ :has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)) .tl-textarea__input:focus {
187
206
  box-shadow: inset var(--textarea-box-shadow-focus);
188
207
  }
189
- .tl-textarea--readonly:hover .tl-textarea__input:not(:focus) {
208
+ :has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)):hover .tl-textarea__input:not(:focus) {
190
209
  box-shadow: inset var(--textarea-box-shadow-hover);
191
210
  }
192
- .tl-textarea--disabled .tl-textarea__input {
193
- box-shadow: none;
194
- color: var(--textarea-text-disabled);
195
- }
196
211
  .tl-textarea--label-inside .tl-textarea__input {
197
212
  padding-top: 26px;
198
213
  padding-bottom: 15px;
@@ -201,16 +216,16 @@
201
216
  color: transparent;
202
217
  transform: translateY(1px);
203
218
  }
204
- .tl-textarea--disabled.tl-textarea--label-inside .tl-textarea__input::placeholder {
205
- color: var(--textarea-placeholder) !important;
219
+ .tl-textarea--label-inside .tl-textarea__input:disabled::placeholder {
220
+ color: var(--textarea-placeholder-disabled) !important;
206
221
  }
207
- .tl-textarea--readonly .tl-textarea__input {
222
+ :has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)) .tl-textarea__input {
208
223
  user-select: auto;
209
224
  caret-color: transparent;
210
225
  cursor: default;
211
226
  pointer-events: none;
212
227
  }
213
- .tl-textarea--readonly:not(.tl-textarea--disabled):not(.tl-textarea--hide-readonly-icon) .tl-textarea__input {
228
+ :has(.tl-textarea__input[readonly]):not(:has(.tl-textarea__input:disabled)):not(.tl-textarea__input--hide-readonly-icon) .tl-textarea__input {
214
229
  padding-right: 50px;
215
230
  }
216
231
 
@@ -242,7 +257,7 @@
242
257
  transition: transform 0.15s, font-size 0.15s, color 0.15s, top 0.15s;
243
258
  z-index: 1;
244
259
  }
245
- .tl-textarea--label-inside.tl-textarea--disabled .tl-textarea__label {
260
+ .tl-textarea--label-inside:has(.tl-textarea__input:disabled) .tl-textarea__label {
246
261
  font-family: var(--detail-07-font-family);
247
262
  font-size: var(--detail-07-font-size);
248
263
  line-height: var(--detail-07-line-height);
@@ -253,7 +268,7 @@
253
268
  color: var(--textarea-label-disabled);
254
269
  transform: translateY(0);
255
270
  }
256
- .tl-textarea:not(.tl-textarea--label-inside).tl-textarea--disabled .tl-textarea__label {
271
+ .tl-textarea:not(.tl-textarea--label-inside):has(.tl-textarea__input:disabled) .tl-textarea__label {
257
272
  color: var(--textarea-label-disabled);
258
273
  }
259
274
 
@@ -273,7 +288,7 @@
273
288
  color: var(--textarea-helper);
274
289
  position: relative;
275
290
  }
276
- .tl-textarea--disabled .tl-textarea__helper {
291
+ :has(.tl-textarea__input:disabled) .tl-textarea__helper {
277
292
  color: var(--color-foreground-text-disabled);
278
293
  }
279
294
  .tl-textarea--error .tl-textarea__helper {
@@ -292,16 +307,16 @@
292
307
  mask-repeat: no-repeat;
293
308
  mask-position: center;
294
309
  }
295
- .tl-textarea--error.tl-textarea--readonly .tl-textarea__helper {
310
+ .tl-textarea--error:has(.tl-textarea__input[readonly]) .tl-textarea__helper {
296
311
  padding-left: 0;
297
312
  }
298
- .tl-textarea--error.tl-textarea--readonly .tl-textarea__helper::before {
313
+ .tl-textarea--error:has(.tl-textarea__input[readonly]) .tl-textarea__helper::before {
299
314
  display: none;
300
315
  }
301
- .tl-textarea--error:not(.tl-textarea--readonly):not(.tl-textarea--disabled) .tl-textarea__helper {
316
+ .tl-textarea--error:not(:has(.tl-textarea__input[readonly])):not(:has(.tl-textarea__input:disabled)) .tl-textarea__helper {
302
317
  color: var(--textarea-error);
303
318
  }
304
- .tl-textarea--error.tl-textarea--disabled .tl-textarea__helper::before {
319
+ .tl-textarea--error:has(.tl-textarea__input:disabled) .tl-textarea__helper::before {
305
320
  background-color: var(--color-foreground-text-disabled);
306
321
  }
307
322
 
@@ -315,13 +330,13 @@
315
330
  margin-left: auto;
316
331
  color: var(--textarea-textcounter);
317
332
  }
318
- .tl-textarea--disabled .tl-textarea__charcounter {
333
+ :has(.tl-textarea__input:disabled) .tl-textarea__charcounter {
319
334
  color: var(--color-foreground-text-disabled);
320
335
  }
321
- .tl-textarea--error:not(.tl-textarea--readonly):not(.tl-textarea--disabled) .tl-textarea__charcounter {
336
+ .tl-textarea--error:not(:has(.tl-textarea__input[readonly])):not(:has(.tl-textarea__input:disabled)) .tl-textarea__charcounter {
322
337
  color: var(--textarea-error);
323
338
  }
324
- .tl-textarea--error:not(.tl-textarea--readonly):not(.tl-textarea--disabled) .tl-textarea__charcounter .tl-textarea__charcounter-divider {
339
+ .tl-textarea--error:not(:has(.tl-textarea__input[readonly])):not(:has(.tl-textarea__input:disabled)) .tl-textarea__charcounter .tl-textarea__charcounter-divider {
325
340
  color: var(--textarea-error);
326
341
  }
327
342
 
@@ -8,6 +8,10 @@
8
8
  --toggle-border-focus: var(--color-foreground-border-accent-focus);
9
9
  }
10
10
 
11
+ .tl-toggle:has(input[type=checkbox]:disabled) {
12
+ cursor: not-allowed;
13
+ }
14
+
11
15
  .tl-toggle__input {
12
16
  appearance: initial;
13
17
  margin: 0;
@@ -65,6 +69,7 @@
65
69
  }
66
70
  .tl-toggle__input:disabled {
67
71
  pointer-events: none;
72
+ cursor: not-allowed;
68
73
  }
69
74
  .tl-toggle__input:disabled::before {
70
75
  background-color: var(--toggle-disabled);
@@ -113,9 +118,10 @@
113
118
  color: var(--toggle-text);
114
119
  margin-bottom: 12px;
115
120
  }
116
- .tl-toggle__headline--disabled {
121
+ :has(input[type=checkbox]:disabled) .tl-toggle__headline {
117
122
  color: var(--toggle-disabled);
118
123
  user-select: none;
124
+ cursor: not-allowed;
119
125
  }
120
126
 
121
127
  .tl-toggle__label {
@@ -132,7 +138,8 @@
132
138
  vertical-align: middle;
133
139
  padding-left: 8px;
134
140
  }
135
- .tl-toggle__label--disabled {
141
+ input[type=checkbox]:disabled ~ .tl-toggle__label {
136
142
  color: var(--toggle-disabled);
137
143
  pointer-events: none;
144
+ cursor: not-allowed;
138
145
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scania/tegel-lite",
3
- "version": "0.0.1-beta.0",
3
+ "version": "0.0.1-beta.10",
4
4
  "description": "Styles-only library for Tegel Design System (Beta)",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -26,6 +26,7 @@
26
26
  "./global.css": "./dist/global.css",
27
27
  "./scania-variables.css": "./dist/scania-variables.css",
28
28
  "./traton-variables.css": "./dist/traton-variables.css",
29
+ "./components.css": "./dist/components.css",
29
30
  "./tl-accordion.css": "./dist/tl-accordion.css",
30
31
  "./tl-badge.css": "./dist/tl-badge.css",
31
32
  "./tl-banner.css": "./dist/tl-banner.css",
@@ -47,7 +48,6 @@
47
48
  "./tl-step.css": "./dist/tl-step.css",
48
49
  "./tl-stepper.css": "./dist/tl-stepper.css",
49
50
  "./tl-text-field.css": "./dist/tl-text-field.css",
50
- "./tl-textarea-mixins.css": "./dist/tl-textarea-mixins.css",
51
51
  "./tl-textarea.css": "./dist/tl-textarea.css",
52
52
  "./tl-toast.css": "./dist/tl-toast.css",
53
53
  "./tl-toggle.css": "./dist/tl-toggle.css",
@@ -60,7 +60,14 @@
60
60
  "./tl-side-menu.css": "./dist/tl-side-menu.css",
61
61
  "./tl-footer.css": "./dist/tl-footer.css",
62
62
  "./tl-slider.css": "./dist/tl-slider.css",
63
- "./tl-radiobutton.css": "./dist/tl-radiobutton.css"
63
+ "./tl-radiobutton.css": "./dist/tl-radiobutton.css",
64
+ "./tl-folder-tabs.css": "./dist/tl-folder-tabs.css",
65
+ "./tl-inline-tabs.css": "./dist/tl-inline-tabs.css",
66
+ "./tl-navigation-tabs.css": "./dist/tl-navigation-tabs.css",
67
+ "./tl-folder-tab.css": "./dist/tl-folder-tab.css",
68
+ "./tl-inline-tab.css": "./dist/tl-inline-tab.css",
69
+ "./tl-navigation-tab.css": "./dist/tl-navigation-tab.css",
70
+ "./tl-textarea-mixins.css": "./dist/tl-textarea-mixins.css"
64
71
  },
65
72
  "repository": {
66
73
  "type": "git",
@@ -69,8 +76,11 @@
69
76
  "publishConfig": {
70
77
  "access": "public"
71
78
  },
79
+ "files": [
80
+ "dist/"
81
+ ],
72
82
  "scripts": {
73
- "prepublishOnly": "echo 'Warning: Run npm run build:lte from root before publishing'",
83
+ "prepublishOnly": "echo 'Warning: Run npm run build:tegel-lite from root before publishing'",
74
84
  "test": "npx playwright test"
75
85
  },
76
86
  "devDependencies": {
@@ -1,165 +0,0 @@
1
- @charset "UTF-8";
2
- .tl-radiobutton {
3
- --radio-button-background-hover: var(--color-foreground-border-discrete);
4
- --radio-button-background-inverse: var(--color-foreground-icon-inverse-strong);
5
- --radio-button-background-disabled: var(--color-background-accent-primary-disabled);
6
- --radio-button-border: var(--color-foreground-border-strong);
7
- --radio-button-label: var(--color-foreground-text-strong);
8
- --radio-button-label-disabled: var(--color-foreground-text-disabled);
9
- --radio-button-focus: var(--color-foreground-border-accent-focus);
10
- --radio-button-checked-disabled: var(--color-foreground-icon-disabled);
11
- --radio-button-spacing-4: var(--tds-spacing-element-4) 0 var(--tds-spacing-element-4)
12
- var(--tds-spacing-element-4);
13
- }
14
-
15
- /* Typography Usage mixins */
16
- /* Block */
17
- .tl-radiobutton {
18
- box-sizing: border-box;
19
- }
20
- .tl-radiobutton * {
21
- box-sizing: border-box;
22
- }
23
- .tl-radiobutton {
24
- font-family: var(--detail-02-font-family);
25
- font-size: var(--detail-02-font-size);
26
- line-height: var(--detail-02-line-height);
27
- font-weight: var(--detail-02-font-weight);
28
- letter-spacing: var(--detail-02-letter-spacing);
29
- text-transform: var(--detail-02-text-transform);
30
- color: var(--radio-button-label);
31
- display: flex;
32
- align-items: center;
33
- margin-left: -4px;
34
- }
35
-
36
- /* Elements */
37
- /* INPUT — semantic control (hidden visually) */
38
- .tl-radiobutton__input {
39
- appearance: none;
40
- outline: none;
41
- margin: 0;
42
- border: 0;
43
- inline-size: 24px;
44
- block-size: 24px;
45
- position: absolute;
46
- opacity: 0;
47
- pointer-events: none;
48
- border-radius: 50%;
49
- /* Focus: pulse + thin outline on visual control */
50
- }
51
- .tl-radiobutton__input:focus + .tl-radiobutton__control::before {
52
- background-color: var(--radio-button-focus);
53
- animation: rb-focus 0.4s cubic-bezier(0.65, 0.05, 0.38, 0.95) forwards;
54
- }
55
- .tl-radiobutton__input:focus + .tl-radiobutton__control::after {
56
- outline: 1px solid var(--tds-radio-button-interaction-outline);
57
- }
58
- .tl-radiobutton__input {
59
- /* Checked: thicker border to create dot effect */
60
- }
61
- .tl-radiobutton__input:checked + .tl-radiobutton__control::after {
62
- border: 4px solid var(--radio-button-border);
63
- }
64
- .tl-radiobutton__input {
65
- /* Checked + focus: thicker outline on inner circle */
66
- }
67
- .tl-radiobutton__input:checked:focus + .tl-radiobutton__control::after {
68
- outline: 4px solid var(--radio-button-focus);
69
- }
70
- .tl-radiobutton--disabled .tl-radiobutton__input:checked + .tl-radiobutton__control::before {
71
- border: 1px solid var(--radio-button-border-disabled);
72
- display: block;
73
- inline-size: 16px;
74
- block-size: 16px;
75
- left: 3px;
76
- top: 3px;
77
- box-sizing: content-box;
78
- }
79
- .tl-radiobutton--disabled .tl-radiobutton__input:checked + .tl-radiobutton__control::after {
80
- border: 4px solid var(--radio-button-background-disabled);
81
- background-color: var(--radio-button-checked-disabled);
82
- left: 4px;
83
- top: 4px;
84
- }
85
-
86
- /* CONTROL — visual ring + inner circle */
87
- .tl-radiobutton__control {
88
- inline-size: 24px;
89
- block-size: 24px;
90
- border-radius: 50%;
91
- position: relative;
92
- cursor: pointer;
93
- flex-shrink: 0;
94
- align-self: flex-start;
95
- box-sizing: border-box;
96
- }
97
- .tl-radiobutton__control::before, .tl-radiobutton__control::after {
98
- content: "";
99
- position: absolute;
100
- border-radius: 50%;
101
- box-sizing: border-box;
102
- }
103
- .tl-radiobutton__control {
104
- /* focus "pulse" background holder */
105
- }
106
- .tl-radiobutton__control::before {
107
- inline-size: 22px;
108
- block-size: 22px;
109
- left: 1px;
110
- top: 1px;
111
- }
112
- .tl-radiobutton__control {
113
- /* base inner circle + ring */
114
- }
115
- .tl-radiobutton__control::after {
116
- background-color: var(--radio-button-background-inverse);
117
- border: 1px solid var(--radio-button-border);
118
- inline-size: 16px;
119
- block-size: 16px;
120
- left: 4px;
121
- top: 4px;
122
- }
123
- .tl-radiobutton__control {
124
- /* Hover outline (only when not disabled) */
125
- }
126
- .tl-radiobutton:not(.tl-radiobutton--disabled):hover .tl-radiobutton__control::after {
127
- outline: 2px solid var(--radio-button-background-hover);
128
- }
129
- .tl-radiobutton__control {
130
- /* Disabled visuals */
131
- }
132
- .tl-radiobutton--disabled .tl-radiobutton__control {
133
- cursor: not-allowed;
134
- }
135
- .tl-radiobutton--disabled .tl-radiobutton__control::before {
136
- outline: 1px solid var(--radio-button-border-disabled);
137
- outline-offset: -4px;
138
- }
139
- .tl-radiobutton--disabled .tl-radiobutton__control::after {
140
- background-color: var(--radio-button-background-disabled);
141
- border-color: var(--radio-button-background-disabled);
142
- /* prevent hover outline when disabled */
143
- outline: none;
144
- }
145
-
146
- /* LABEL — spacing & disabled color */
147
- .tl-radiobutton__label {
148
- padding: var(--radio-button-spacing-4);
149
- cursor: pointer;
150
- }
151
- .tl-radiobutton--disabled .tl-radiobutton__label {
152
- color: var(--radio-button-label-disabled);
153
- cursor: not-allowed;
154
- }
155
-
156
- /* Focus animation */
157
- @keyframes rb-focus {
158
- 0% {
159
- transform: scale(0);
160
- opacity: 0;
161
- }
162
- 100% {
163
- transform: scale(1);
164
- }
165
- }