@ihk-gfi/lux-components-theme 21.4.0 → 21.5.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.
@@ -117,14 +117,17 @@ a:not(.lux-link) {
117
117
  }
118
118
  }
119
119
 
120
+ // @deprecated Verwende stattdessen .lux-bg-header aus _luxutilities.scss.
120
121
  .lux-app-header-bg {
121
122
  background-color: var(--lux-theme-app-header-bg);
122
123
  }
123
124
 
125
+ // @deprecated Verwende stattdessen .lux-bg-content aus _luxutilities.scss.
124
126
  .lux-app-content-bg {
125
127
  background-color: var(--lux-theme-app-content-bg);
126
128
  }
127
129
 
130
+ // @deprecated Verwende stattdessen .lux-bg-footer aus _luxutilities.scss.
128
131
  .lux-app-footer-bg {
129
132
  background-color: var(--lux-theme-app-footer-bg);
130
133
  }
@@ -314,14 +317,17 @@ lux-card.lux-card-grow {
314
317
  box-sizing: content-box;
315
318
  }
316
319
 
320
+ // @deprecated Verwende stattdessen .lux-whitespace-nowrap aus _luxutilities.scss.
317
321
  .lux-nowrap {
318
322
  white-space: nowrap;
319
323
  }
320
324
 
325
+ // @deprecated Verwende stattdessen .lux-cursor-pointer aus _luxutilities.scss.
321
326
  .lux-cursor {
322
327
  cursor: pointer;
323
328
  }
324
329
 
330
+ // @deprecated Verwende stattdessen .lux-pointer-events-none aus _luxutilities.scss.
325
331
  .lux-block-pointer-events {
326
332
  pointer-events: none;
327
333
  }
@@ -338,14 +344,6 @@ lux-card.lux-card-grow {
338
344
  opacity: 0.6;
339
345
  }
340
346
 
341
- .lux-overflow-y-hidden {
342
- overflow-y: hidden;
343
- }
344
-
345
- .lux-overflow-y-auto {
346
- overflow-y: auto;
347
- }
348
-
349
347
  .lux-overflow-wrap-break-word {
350
348
  overflow-wrap: break-word;
351
349
  }
@@ -402,6 +400,7 @@ $gapSteps: 10, 20, 30;
402
400
  }
403
401
 
404
402
  /*
403
+ @deprecated Verwende stattdessen .lux-z-{n} aus _luxutilities.scss (z.B. .lux-z-100).
405
404
  Erstellt die Z-Indizes.
406
405
  Um weitere Z-Indizes anzulegen, die Variable zindexSteps um die entsprechenden Werte ergaenzen.
407
406
  */
@@ -0,0 +1,343 @@
1
+ @use "luxfocus" as focus;
2
+
3
+ // =============================================================================
4
+ // LUX Utility Classes
5
+ // =============================================================================
6
+ // Tailwind-inspired utility classes that complement the LUX component styles.
7
+ // LUX component styles cover: display, flex, gap, margin, padding,
8
+ // width/height, align, justify.
9
+ // These utilities add: positioning, overflow, border, cursor, typography,
10
+ // z-index, interaction patterns.
11
+ //
12
+ // Usage in consuming apps:
13
+ // The utilities are included automatically via the LUX theme package.
14
+ // =============================================================================
15
+
16
+ // =============================================================================
17
+ // LUX Utility Design Tokens
18
+ // =============================================================================
19
+ // Utilities-spezifische CSS Custom Properties.
20
+ // Theme-agnostische Base-Tokens (Spacing, Font-Size) sind in _variables.scss.
21
+ // =============================================================================
22
+
23
+ :root {
24
+ // --- Focus State Layer ---
25
+ // Background tint applied behind focus-visible outlines (12% primary, per Figma "focus-state-layer-color").
26
+ --lux-focus-state-layer-color: color-mix(in srgb, var(--lux-theme-primary-color) 12%, transparent);
27
+
28
+ // --- Z-Index ---
29
+ --lux-z-action-bar: 8;
30
+ --lux-z-header: 100;
31
+ --lux-z-backdrop: 199;
32
+ --lux-z-drawer: 200;
33
+ --lux-z-skip-link: 10000;
34
+ }
35
+
36
+ // =============================================================================
37
+ // Positioning
38
+ // =============================================================================
39
+
40
+ $positions: static, relative, absolute, fixed, sticky;
41
+ @each $pos in $positions {
42
+ .lux-#{$pos} {
43
+ position: $pos;
44
+ }
45
+ }
46
+
47
+ // Inset (top, right, bottom, left)
48
+ $inset-values: (
49
+ "0": 0,
50
+ "auto": auto
51
+ );
52
+ @each $key, $val in $inset-values {
53
+ .lux-inset-#{$key} {
54
+ inset: $val;
55
+ }
56
+ .lux-top-#{$key} {
57
+ top: $val;
58
+ }
59
+ .lux-right-#{$key} {
60
+ right: $val;
61
+ }
62
+ .lux-bottom-#{$key} {
63
+ bottom: $val;
64
+ }
65
+ .lux-left-#{$key} {
66
+ left: $val;
67
+ }
68
+ }
69
+
70
+ // =============================================================================
71
+ // Z-Index
72
+ // =============================================================================
73
+
74
+ $z-indices: (
75
+ "auto": auto,
76
+ "0": 0,
77
+ "1": 1,
78
+ "5": 5,
79
+ "8": 8,
80
+ "9": 9,
81
+ "10": 10,
82
+ "100": 100,
83
+ "199": 199,
84
+ "200": 200,
85
+ "500": 500,
86
+ "1000": 1000,
87
+ "10000": 10000
88
+ );
89
+ @each $key, $val in $z-indices {
90
+ .lux-z-#{$key} {
91
+ z-index: $val;
92
+ }
93
+ }
94
+
95
+ // =============================================================================
96
+ // Overflow
97
+ // =============================================================================
98
+ // Note: .lux-overflow-y-hidden and .lux-overflow-y-auto are also defined in
99
+ // _luxstyles.scss. The definitions below are identical and take precedence
100
+ // due to cascade order.
101
+
102
+ $overflow-values: auto, hidden, visible, scroll;
103
+ @each $val in $overflow-values {
104
+ .lux-overflow-#{$val} {
105
+ overflow: $val;
106
+ }
107
+ .lux-overflow-x-#{$val} {
108
+ overflow-x: $val;
109
+ }
110
+ .lux-overflow-y-#{$val} {
111
+ overflow-y: $val;
112
+ }
113
+ }
114
+
115
+ // =============================================================================
116
+ // Border
117
+ // =============================================================================
118
+
119
+ .lux-border-0 {
120
+ border: none;
121
+ }
122
+
123
+ $border-radius: (
124
+ "none": 0,
125
+ "xs": var(--lux-theme-radius-xs),
126
+ "sm": var(--lux-theme-radius-sm),
127
+ "md": var(--lux-theme-radius-md),
128
+ "lg": var(--lux-theme-radius-lg),
129
+ "xl": var(--lux-theme-radius-xl),
130
+ "xxl": var(--lux-theme-radius-xxl),
131
+ "full": 50%,
132
+ "theme": var(--lux-theme-app-border-radius)
133
+ );
134
+ @each $key, $val in $border-radius {
135
+ .lux-rounded-#{$key} {
136
+ border-radius: $val;
137
+ }
138
+ }
139
+
140
+ // =============================================================================
141
+ // Box Shadow
142
+ // =============================================================================
143
+
144
+ .lux-shadow-none {
145
+ box-shadow: none;
146
+ }
147
+
148
+ // =============================================================================
149
+ // Cursor
150
+ // =============================================================================
151
+
152
+ .lux-cursor-pointer {
153
+ cursor: pointer;
154
+ }
155
+
156
+ .lux-cursor-default {
157
+ cursor: default;
158
+ }
159
+
160
+ // =============================================================================
161
+ // Pointer Events
162
+ // =============================================================================
163
+
164
+ .lux-pointer-events-none {
165
+ pointer-events: none;
166
+ }
167
+
168
+ .lux-pointer-events-auto {
169
+ pointer-events: auto;
170
+ }
171
+
172
+ // =============================================================================
173
+ // Typography
174
+ // =============================================================================
175
+
176
+ // Font size
177
+ $font-sizes: (
178
+ "xs": var(--lux-theme-font-size-xs),
179
+ "sm": var(--lux-theme-font-size-sm),
180
+ "base": var(--lux-theme-font-size-md),
181
+ "lg": var(--lux-theme-font-size-lg),
182
+ "xl": var(--lux-theme-font-size-xl),
183
+ "2xl": var(--lux-theme-font-size-2xl)
184
+ );
185
+ @each $key, $val in $font-sizes {
186
+ .lux-text-#{$key} {
187
+ font-size: $val;
188
+ }
189
+ }
190
+
191
+ // Font weight
192
+ $font-weights: (
193
+ "light": 300,
194
+ "normal": 400,
195
+ "medium": 500,
196
+ "semibold": 600,
197
+ "bold": 700
198
+ );
199
+ @each $key, $val in $font-weights {
200
+ .lux-font-#{$key} {
201
+ font-weight: $val;
202
+ }
203
+ }
204
+
205
+ // Font family
206
+ .lux-font-headline {
207
+ font-family: var(--lux-theme-app-headline-font, inherit);
208
+ }
209
+
210
+ .lux-font-body {
211
+ font-family: var(--lux-theme-app-font-family, inherit);
212
+ }
213
+
214
+ // Line height
215
+ $line-heights: (
216
+ "none": 1,
217
+ "tight": 1.2,
218
+ "normal": 1.5,
219
+ "relaxed": 1.75
220
+ );
221
+ @each $key, $val in $line-heights {
222
+ .lux-leading-#{$key} {
223
+ line-height: $val;
224
+ }
225
+ }
226
+
227
+ // White space
228
+ .lux-whitespace-nowrap {
229
+ white-space: nowrap;
230
+ }
231
+
232
+ .lux-whitespace-normal {
233
+ white-space: normal;
234
+ }
235
+
236
+ // =============================================================================
237
+ // Background
238
+ // =============================================================================
239
+
240
+ .lux-bg-transparent {
241
+ background: transparent;
242
+ }
243
+
244
+ .lux-bg-header {
245
+ background-color: var(--lux-theme-app-header-bg);
246
+ }
247
+
248
+ .lux-bg-content {
249
+ background-color: var(--lux-theme-app-content-bg);
250
+ }
251
+
252
+ .lux-bg-footer {
253
+ background-color: var(--lux-theme-app-footer-bg);
254
+ }
255
+
256
+ .lux-bg-primary {
257
+ background-color: var(--lux-theme-primary-color);
258
+ }
259
+
260
+ // =============================================================================
261
+ // Text Color
262
+ // =============================================================================
263
+
264
+ .lux-text-primary {
265
+ color: var(--lux-theme-primary-color);
266
+ }
267
+
268
+ .lux-text-dark {
269
+ color: var(--lux-theme-dark-primary-text);
270
+ }
271
+
272
+ .lux-text-light {
273
+ color: var(--lux-theme-light-primary-text);
274
+ }
275
+
276
+ .lux-text-secondary {
277
+ color: var(--lux-theme-dark-secondary-text);
278
+ }
279
+
280
+ .lux-text-disabled {
281
+ color: var(--lux-theme-dark-disabled-text);
282
+ }
283
+
284
+ // =============================================================================
285
+ // Outline
286
+ // =============================================================================
287
+
288
+ .lux-outline-none {
289
+ outline: none;
290
+ }
291
+
292
+ // =============================================================================
293
+ // Transition
294
+ // =============================================================================
295
+
296
+ .lux-transition-none {
297
+ transition: none;
298
+ }
299
+
300
+ // =============================================================================
301
+ // Skip-Link
302
+ // =============================================================================
303
+ // Visually hidden until focused; reveals as a high-contrast pill above all content.
304
+ // Pair with `lux-sr-only` on the element so it stays hidden by default.
305
+
306
+ .lux-skip-link {
307
+ &:focus-visible {
308
+ position: fixed;
309
+ top: var(--lux-theme-spacing-sm);
310
+ left: var(--lux-theme-spacing-sm);
311
+ width: auto;
312
+ height: auto;
313
+ padding: var(--lux-theme-spacing-sm) var(--lux-theme-spacing-md);
314
+ background-color: var(--lux-theme-primary-20);
315
+ color: var(--lux-theme-primary-100);
316
+ font-size: var(--lux-theme-font-size-sm);
317
+ font-weight: 600;
318
+ border-radius: var(--lux-theme-radius-sm);
319
+ z-index: var(--lux-z-skip-link);
320
+ outline: 3px solid var(--lux-theme-custom-lightblue);
321
+ }
322
+ }
323
+
324
+ // =============================================================================
325
+ // Interaction
326
+ // =============================================================================
327
+ // Applies the LUX hover/active/focus pattern to custom interactive elements
328
+ // (e.g. <a> or <button> without lux-button).
329
+ // Use together with .lux-rounded-theme for consistent styling.
330
+
331
+ .lux-interactive {
332
+ &:hover:not(:focus-visible) {
333
+ background-color: var(--lux-theme-hover-color);
334
+ }
335
+
336
+ &:active {
337
+ background-color: var(--lux-theme-selected-bg-color);
338
+ }
339
+
340
+ &:focus-visible {
341
+ @include focus.lux-button-focus;
342
+ }
343
+ }
@@ -137,7 +137,7 @@ lux-card {
137
137
  }
138
138
 
139
139
  .lux-card {
140
- &[class~="lux-cursor"]:hover {
140
+ &[class~="lux-cursor-pointer"]:hover {
141
141
  background-image: var(--lux-theme-app-gradient-reverse);
142
142
  background-color: #ffffff;
143
143
  border-color: var(--lux-theme-dark-primary-text);
@@ -149,7 +149,7 @@ lux-card {
149
149
  }
150
150
  }
151
151
 
152
- &[class~="lux-cursor"]:focus-visible {
152
+ &[class~="lux-cursor-pointer"]:focus-visible {
153
153
  @include luxfocus.focus-dark-mixin-inline;
154
154
  }
155
155
  }
@@ -93,6 +93,7 @@ lux-input-ac,
93
93
  lux-select-ac,
94
94
  lux-lookup-combobox-ac,
95
95
  lux-datepicker-ac,
96
+ lux-timepicker,
96
97
  lux-datetimepicker-ac,
97
98
  lux-file-input-ac,
98
99
  lux-textarea-ac {
@@ -78,7 +78,7 @@ lux-list {
78
78
  }
79
79
 
80
80
  &:not(.lux-list-item-selected) {
81
- mat-card[class~="lux-cursor"]:not([class*="mat-elevation-z"]) {
81
+ mat-card[class~="lux-cursor-pointer"]:not([class*="mat-elevation-z"]) {
82
82
  @include luxfocus.lux-selectable-mixin;
83
83
 
84
84
  &:hover {
@@ -21,9 +21,11 @@ lux-tabs {
21
21
  );
22
22
 
23
23
  mat-tab-group:not(.lux-tabs-show-divider) {
24
- @include mat.tabs-overrides((
25
- divider-height: 0,
26
- ));
24
+ @include mat.tabs-overrides(
25
+ (
26
+ divider-height: 0
27
+ )
28
+ );
27
29
  }
28
30
 
29
31
  .mdc-tab {
@@ -59,8 +61,23 @@ lux-tabs {
59
61
  padding-top: 4px;
60
62
  }
61
63
 
64
+ // HINWEIS: Für jeden Wert in LuxBadgeNotificationColor muss hier eine Klasse existieren.
65
+ .lux-notification-color-primary {
66
+ background-color: var(--lux-theme-primary-color);
67
+ }
68
+
69
+ // Deprecated: .lux-notification-new wird in einer zukünftigen Version entfernt. Bitte stattdessen .lux-notification-color-accent verwenden.
70
+ .lux-notification-color-accent,
62
71
  .lux-notification-new {
63
- background-color: var(--lux-theme-custom-green);
72
+ background-color: var(--lux-theme-accent-70);
73
+ }
74
+
75
+ .lux-notification-color-warn {
76
+ background-color: var(--mat-sys-error);
77
+ }
78
+
79
+ .lux-notification-color-default {
80
+ background-color: #605e5e;
64
81
  }
65
82
 
66
83
  .lux-tabs-notification-icon {
@@ -10,7 +10,7 @@ lux-tile {
10
10
  background-color: var(--lux-theme-accent-70);
11
11
  }
12
12
 
13
- mat-card[class~="lux-cursor"] {
13
+ mat-card[class~="lux-cursor-pointer"] {
14
14
  &.mat-mdc-card {
15
15
  border-radius: var(--lux-theme-tile-border-radius);
16
16
  overflow: hidden !important;
@@ -171,9 +171,11 @@ lux-tile {
171
171
 
172
172
  /** ########## Focus / Hover ########## **/
173
173
 
174
- mat-card[class~="lux-cursor"] {
174
+ mat-card[class~="lux-cursor-pointer"] {
175
175
  &.mat-mdc-card:focus-visible {
176
- box-shadow: 0 0 0 2px #2e8533, 0 0 8px 2px #2e8533 !important;
176
+ box-shadow:
177
+ 0 0 0 2px #2e8533,
178
+ 0 0 8px 2px #2e8533 !important;
177
179
  outline: 0 !important;
178
180
  }
179
181
 
@@ -0,0 +1,7 @@
1
+ @use "@angular/material" as mat;
2
+
3
+ lux-timepicker {
4
+ button:not(:disabled) .lux-timepicker-toggle-icon {
5
+ color: var(--lux-theme-datepicker-icon-color);
6
+ }
7
+ }
@@ -50,7 +50,9 @@ $componentColorNames: ("red", "green", "purple", "blue", "gray", "orange", "blac
50
50
 
51
51
  --lux-theme-spacing-xxs: 2px;
52
52
  --lux-theme-spacing-xs: 4px;
53
+ --lux-theme-spacing-1-5: 6px;
53
54
  --lux-theme-spacing-sm: 8px;
55
+ --lux-theme-spacing-3: 12px;
54
56
  --lux-theme-spacing-md: 16px;
55
57
  --lux-theme-spacing-lg: 24px;
56
58
  --lux-theme-spacing-xl: 32px;
@@ -62,6 +64,7 @@ $componentColorNames: ("red", "green", "purple", "blue", "gray", "orange", "blac
62
64
  --lux-theme-font-size-md: 1rem;
63
65
  --lux-theme-font-size-lg: 1.125rem;
64
66
  --lux-theme-font-size-xl: 1.25rem;
67
+ --lux-theme-font-size-2xl: 1.5rem;
65
68
 
66
69
  // Hauptfarben
67
70
  --lux-theme-primary-color: #{palettes.$lux-primary-color};
@@ -9,6 +9,7 @@
9
9
  @use "../base-templates/common/luxstyles";
10
10
  @use "../base-templates/common/luxbreakpoints";
11
11
  @use "../base-templates/common/luxlayout";
12
+ @use "../base-templates/common/luxutilities";
12
13
 
13
14
  @use "../base-templates/components/luxAccordion";
14
15
  @use "../base-templates/components/luxAppContent";
@@ -67,6 +68,7 @@
67
68
  @use "../base-templates/components/luxTextbox";
68
69
  @use "../base-templates/components/luxTile";
69
70
  @use "../base-templates/components/luxTileAc";
71
+ @use "../base-templates/components/luxTimepicker";
70
72
  @use "../base-templates/components/luxToggle";
71
73
  @use "../base-templates/components/luxPopup";
72
74
  @use "../base-templates/components/luxToolTip";
@@ -50,7 +50,9 @@ $componentColorNames: ("red", "green", "purple", "blue", "gray", "orange", "blac
50
50
 
51
51
  --lux-theme-spacing-xxs: 2px;
52
52
  --lux-theme-spacing-xs: 4px;
53
+ --lux-theme-spacing-1-5: 6px;
53
54
  --lux-theme-spacing-sm: 8px;
55
+ --lux-theme-spacing-3: 12px;
54
56
  --lux-theme-spacing-md: 16px;
55
57
  --lux-theme-spacing-lg: 24px;
56
58
  --lux-theme-spacing-xl: 32px;
@@ -62,6 +64,7 @@ $componentColorNames: ("red", "green", "purple", "blue", "gray", "orange", "blac
62
64
  --lux-theme-font-size-md: 1rem;
63
65
  --lux-theme-font-size-lg: 1.125rem;
64
66
  --lux-theme-font-size-xl: 1.25rem;
67
+ --lux-theme-font-size-2xl: 1.5rem;
65
68
 
66
69
  // Hauptfarben
67
70
  --lux-theme-primary-color: #{palettes.$lux-primary-color};
@@ -9,6 +9,7 @@
9
9
  @use "../base-templates/common/luxstyles";
10
10
  @use "../base-templates/common/luxbreakpoints";
11
11
  @use "../base-templates/common/luxlayout";
12
+ @use "../base-templates/common/luxutilities";
12
13
 
13
14
  @use "../base-templates/components/luxAccordion";
14
15
  @use "../base-templates/components/luxAppContent";
@@ -67,6 +68,7 @@
67
68
  @use "../base-templates/components/luxTile";
68
69
  @use "../base-templates/components/luxTileAc";
69
70
  @use "../base-templates/components/luxToggle";
71
+ @use "../base-templates/components/luxTimepicker";
70
72
  @use "../base-templates/components/luxPopup";
71
73
  @use "../base-templates/components/luxToolTip";
72
74
  @use "../base-templates/components/luxTourHint";