@ihk-gfi/lux-components-theme 11.4.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 (34) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +198 -0
  3. package/README.md +120 -0
  4. package/package.json +25 -0
  5. package/prebuilt-themes/luxtheme-blue-min.css +1 -0
  6. package/prebuilt-themes/luxtheme-blue-min.css.map +1 -0
  7. package/prebuilt-themes/luxtheme-blue.css +6451 -0
  8. package/prebuilt-themes/luxtheme-blue.css.map +1 -0
  9. package/prebuilt-themes/luxtheme-green-min.css +1 -0
  10. package/prebuilt-themes/luxtheme-green-min.css.map +1 -0
  11. package/prebuilt-themes/luxtheme-green.css +6598 -0
  12. package/prebuilt-themes/luxtheme-green.css.map +1 -0
  13. package/prebuilt-themes/luxtheme-orange-min.css +1 -0
  14. package/prebuilt-themes/luxtheme-orange-min.css.map +1 -0
  15. package/prebuilt-themes/luxtheme-orange.css +6490 -0
  16. package/prebuilt-themes/luxtheme-orange.css.map +1 -0
  17. package/src/base/_luxcomponents.scss +768 -0
  18. package/src/base/_luxfocus.scss +698 -0
  19. package/src/base/_luxicons.scss +2 -0
  20. package/src/base/_luxstyles.scss +503 -0
  21. package/src/base/_luxtheme.scss +7 -0
  22. package/src/blue/_custom.scss +0 -0
  23. package/src/blue/_luxcommon.scss +64 -0
  24. package/src/blue/_luxpalette.scss +105 -0
  25. package/src/blue/luxtheme.scss +11 -0
  26. package/src/green/_custom.scss +219 -0
  27. package/src/green/_luxcommon.scss +64 -0
  28. package/src/green/_luxpalette.scss +106 -0
  29. package/src/green/luxtheme.scss +13 -0
  30. package/src/orange/_custom.scss +66 -0
  31. package/src/orange/_luxcommon.scss +64 -0
  32. package/src/orange/_luxpalette.scss +106 -0
  33. package/src/orange/luxtheme.scss +11 -0
  34. package/src/public/global.scss +13 -0
@@ -0,0 +1,698 @@
1
+ /*
2
+ Dieses Partial-SCSS dient der Verwaltung der Styles für Fokus, Hover und Selected für die LUX-Components und
3
+ die ihnen zugrunde liegenden Material Components.
4
+ */
5
+
6
+ // Fokus
7
+ $outline-dark: $outline-width $outline-style $outline-color-dark !important;
8
+ $outline-bright: $outline-width $outline-style $outline-color-bright !important;
9
+
10
+ @mixin focus-dark-mixin {
11
+ outline: $outline-dark;
12
+ }
13
+
14
+ @mixin focus-bright-mixin {
15
+ outline: $outline-bright;
16
+ }
17
+
18
+ @mixin lux-selectable-mixin {
19
+ -webkit-box-sizing: border-box;
20
+ -moz-box-sizing: border-box;
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ @mixin lux-selected-mixin {
25
+ background-color: $lux-selected-bg-color !important;
26
+ position: relative;
27
+ border-radius: 4px;
28
+
29
+ &:after {
30
+ content: '';
31
+ left: 0;
32
+ width: 6px;
33
+ top: 0;
34
+ bottom: 0;
35
+ position: absolute;
36
+ border-left: 4px solid $lux-selected-border-color;
37
+ border-radius: 4px 0 0 4px;
38
+ }
39
+ }
40
+
41
+ @mixin lux-selected-bottom-mixin {
42
+ position: relative;
43
+
44
+ &:after {
45
+ content: '';
46
+ left: 0;
47
+ top: 0;
48
+ bottom: 0;
49
+ right: 0;
50
+ position: absolute;
51
+ border-bottom: 4px solid $lux-selected-border-color;
52
+ }
53
+ }
54
+
55
+ @mixin lux-hovered-mixin {
56
+ background-color: $lux-hover-color !important;
57
+ border-radius: 4px;
58
+ }
59
+
60
+ /** ########## App-Header ######## **/
61
+ lux-app-header {
62
+ .lux-app-header-title-label {
63
+ &:focus {
64
+ @include focus-bright-mixin;
65
+ }
66
+
67
+ &:hover {
68
+ @include lux-hovered-mixin;
69
+ color: $lux-hover-color-for-dark-background !important;
70
+ }
71
+ }
72
+
73
+ & .lux-side-nav-trigger button:not([disabled]) {
74
+ &:focus {
75
+ @include focus-bright-mixin;
76
+ }
77
+
78
+ &:hover lux-icon {
79
+ color: $lux-hover-color-for-dark-background !important;
80
+ }
81
+ }
82
+
83
+ & .lux-header-action button:not([disabled]) {
84
+ &:focus {
85
+ @include focus-bright-mixin;
86
+ }
87
+
88
+ &:hover {
89
+ color: $lux-hover-color-for-dark-background !important;
90
+
91
+ &.mat-accent lux-icon {
92
+ color: map-get($lux-palette_accent, 500) !important;
93
+ }
94
+
95
+ &.mat-warn lux-icon {
96
+ color: map-get($lux-palette_warn, 500) !important;
97
+ }
98
+
99
+ &.mat-primary lux-icon {
100
+ color: map-get($lux-palette_primary, 500) !important;
101
+ }
102
+ }
103
+ }
104
+
105
+ & lux-image:focus {
106
+ @include focus-bright-mixin;
107
+ }
108
+
109
+ & lux-icon:focus {
110
+ @include focus-bright-mixin;
111
+ }
112
+
113
+ lux-menu-trigger button.lux-right-nav-trigger {
114
+ &:focus {
115
+ @include focus-bright-mixin;
116
+ }
117
+
118
+ &:hover {
119
+ @include lux-hovered-mixin;
120
+
121
+ & lux-icon, .lux-header-username {
122
+ color: $lux-hover-color-for-dark-background !important;
123
+ }
124
+ }
125
+ }
126
+ }
127
+
128
+ /** ########## Side-Nav ########## **/
129
+ lux-side-nav {
130
+ .lux-side-nav-item {
131
+ &.lux-side-nav-item-selected {
132
+ @include lux-selected-mixin;
133
+ }
134
+
135
+ &:focus:not(.lux-side-nav-disabled) {
136
+ @include focus-dark-mixin;
137
+ }
138
+
139
+ &:focus-within:not(.lux-side-nav-disabled) {
140
+ @include focus-dark-mixin;
141
+ }
142
+
143
+ &:hover:not(.lux-side-nav-disabled) {
144
+ @include lux-hovered-mixin;
145
+ }
146
+ }
147
+ }
148
+
149
+ /** ########## Card ########## **/
150
+ lux-card mat-card {
151
+ &[class~=lux-cursor]:focus {
152
+ @include focus-dark-mixin;
153
+ }
154
+
155
+ &[class~=lux-cursor]:hover {
156
+ @include lux-hovered-mixin;
157
+ }
158
+ }
159
+
160
+ /** ########## List ########## **/
161
+ lux-list {
162
+ border: $outline-width dashed transparent;
163
+
164
+ &:focus {
165
+ border: $outline-dark;
166
+ outline: none;
167
+ }
168
+
169
+ lux-list-item {
170
+ &:focus {
171
+ outline: none;
172
+
173
+ mat-card {
174
+ @include focus-dark-mixin;
175
+ }
176
+ }
177
+
178
+ lux-card {
179
+ &.lux-list-item-selected {
180
+ mat-card {
181
+ @include lux-selected-mixin;
182
+ }
183
+ }
184
+
185
+ mat-card {
186
+ @include lux-selectable-mixin;
187
+
188
+ &:hover {
189
+ @include lux-hovered-mixin;
190
+ }
191
+ }
192
+ }
193
+ }
194
+ }
195
+
196
+ /** ########## Chips ########## **/
197
+ lux-chips {
198
+ & .mat-standard-chip:focus {
199
+ @include focus-dark-mixin;
200
+ }
201
+ }
202
+
203
+ /** ########## Form-Control ########## **/
204
+ lux-form-control {
205
+ .lux-form-control:not(.lux-form-control-disabled).lux-focused {
206
+ .lux-form-control-label {
207
+ > * {
208
+ color: $lux-selected-border-color;
209
+ }
210
+ }
211
+
212
+ .cdk-focused .mat-radio-container,
213
+ .mat-checkbox-inner-container,
214
+ .mat-slide-toggle-thumb {
215
+ position: relative;
216
+ @include focus-dark-mixin;
217
+ }
218
+
219
+ .lux-form-control-container:after {
220
+ content: '';
221
+ display: block;
222
+ -webkit-box-sizing: border-box;
223
+ -moz-box-sizing: border-box;
224
+ box-sizing: border-box;
225
+ left: 0;
226
+ right: 0;
227
+ position: absolute;
228
+ height: 2px;
229
+ border-bottom: 2px solid $lux-selected-border-color;
230
+ }
231
+ }
232
+ }
233
+
234
+ /** ########## Datepicker ########## **/
235
+ lux-datepicker {
236
+ mat-datepicker-toggle {
237
+ button:focus {
238
+ @include focus-dark-mixin;
239
+ }
240
+
241
+ .mat-button-focus-overlay {
242
+ display: none;
243
+ }
244
+ }
245
+ }
246
+
247
+ // Class, welche das aufgeklappte Panel referenziert
248
+ .lux-datepicker-panel {
249
+ .mat-calendar-header {
250
+ button {
251
+ .mat-button-focus-overlay {
252
+ display: none;
253
+ }
254
+
255
+ &:focus {
256
+ @include focus-dark-mixin;
257
+ }
258
+
259
+ &:hover {
260
+ @include lux-hovered-mixin;
261
+ }
262
+ }
263
+ }
264
+
265
+ .mat-calendar-content {
266
+ td.mat-calendar-body-cell {
267
+ &:hover > div {
268
+ @include lux-hovered-mixin;
269
+ border-radius: 999px;
270
+ color: $dark-primary-text;
271
+ }
272
+
273
+ &.mat-calendar-body-active .mat-calendar-body-cell-content {
274
+ @include focus-dark-mixin;
275
+ }
276
+ }
277
+ }
278
+ }
279
+
280
+ /** ########## Datetimepicker ########## **/
281
+ lux-datetimepicker {
282
+ mat-datepicker-toggle {
283
+ button:focus {
284
+ @include focus-dark-mixin;
285
+ }
286
+
287
+ .mat-button-focus-overlay {
288
+ display: none;
289
+ }
290
+ }
291
+ }
292
+
293
+ // Class, welche das aufgeklappte Panel referenziert
294
+ .lux-datetimepicker-overlay {
295
+ .mat-calendar-header {
296
+ button {
297
+ .mat-button-focus-overlay {
298
+ display: none;
299
+ }
300
+
301
+ &:focus {
302
+ @include focus-dark-mixin;
303
+ }
304
+
305
+ &:hover {
306
+ @include lux-hovered-mixin;
307
+ }
308
+ }
309
+ }
310
+
311
+ .mat-calendar-content {
312
+ td.mat-calendar-body-cell {
313
+ &:hover > div {
314
+ @include lux-hovered-mixin;
315
+ border-radius: 999px;
316
+ color: $dark-primary-text;
317
+ }
318
+
319
+ &.mat-calendar-body-active .mat-calendar-body-cell-content {
320
+ @include focus-dark-mixin;
321
+ }
322
+ }
323
+ }
324
+ }
325
+
326
+ /** ########## Table ########## **/
327
+ lux-table {
328
+
329
+ tr:hover {
330
+ > td,
331
+ > th {
332
+ @include lux-hovered-mixin;
333
+ // Wir nutzen hier die hover-Farbe ohne Alpha-Wert, da bei Sticky-Columns sonst unschöne Überlagerungen entstehen können
334
+ background-color: $lux-hover-color !important;
335
+ border-radius: 0;
336
+ }
337
+ }
338
+
339
+ tr:focus {
340
+ @include focus-dark-mixin;
341
+ }
342
+
343
+ .lux-row-selected:focus {
344
+ background-color: $lux-hover-color !important;
345
+ outline: none;
346
+ }
347
+
348
+ th.cdk-focused div.mat-sort-header-container {
349
+ @include focus-dark-mixin;
350
+ }
351
+
352
+ th.cdk-keyboard-focused div.mat-sort-header-container {
353
+ border: none !important;
354
+ }
355
+ }
356
+
357
+ /** ########## Select ########## **/
358
+ // Class, welche das aufgeklappte Panel referenziert
359
+ .lux-select-panel {
360
+ mat-option {
361
+
362
+ &.mat-selected {
363
+ @include lux-selected-mixin;
364
+ }
365
+
366
+ &:focus {
367
+ @include focus-dark-mixin;
368
+ }
369
+
370
+ &.mat-active {
371
+ @include focus-dark-mixin;
372
+ }
373
+
374
+ &:hover {
375
+ @include lux-hovered-mixin;
376
+ }
377
+ }
378
+ }
379
+
380
+ /** ########## Button ########## **/
381
+ lux-button {
382
+ button:not([disabled]) {
383
+ .mat-button-focus-overlay {
384
+ display: none;
385
+ }
386
+
387
+ &:focus {
388
+ @include focus-dark-mixin;
389
+ }
390
+
391
+ &:not(.mat-fab):not(.mat-raised-button) {
392
+ &:hover {
393
+ background-color: $lux-hover-color;
394
+
395
+ &.mat-accent {
396
+ color: map-get($lux-palette_accent, 900);
397
+ }
398
+
399
+ &.mat-warn {
400
+ }
401
+
402
+ &.mat-primary {
403
+ }
404
+ }
405
+ }
406
+
407
+ &.mat-fab:hover,
408
+ &.mat-raised-button:hover {
409
+ background-color: darken($lux-hover-color, 10) !important; // $lux-hover-color !important;
410
+
411
+ &.mat-accent {
412
+ background-color: lighten(map-get($lux-palette_accent, 500), 10) !important;
413
+ }
414
+
415
+ &.mat-warn {
416
+ background-color: lighten(map-get($lux-palette_warn, 500), 10) !important;
417
+ }
418
+
419
+ &.mat-primary {
420
+ background-color: lighten(map-get($lux-palette_primary, 500), 10) !important;
421
+ }
422
+ }
423
+
424
+ &.mat-fab:focus:not(:hover),
425
+ &.mat-raised-button:focus:not(:hover) {
426
+ background-color: white !important;
427
+
428
+ &.mat-accent {
429
+ background-color: lighten(map-get($lux-palette_accent, 500), 5) !important;
430
+ }
431
+
432
+ &.mat-warn {
433
+ background-color: lighten(map-get($lux-palette_warn, 500), 5) !important;
434
+ }
435
+
436
+ &.mat-primary {
437
+ background-color: lighten(map-get($lux-palette_primary, 500), 5) !important;
438
+ }
439
+ }
440
+ }
441
+ }
442
+
443
+ /** ########## Autocomplete ########## **/
444
+ // Class, welche das aufgeklappte Panel referenziert
445
+ .lux-autocomplete-panel {
446
+ mat-option {
447
+
448
+ &:focus {
449
+ @include focus-dark-mixin;
450
+ }
451
+
452
+ &.mat-active {
453
+ @include focus-dark-mixin;
454
+ }
455
+
456
+ &:hover {
457
+ @include lux-hovered-mixin;
458
+ }
459
+ }
460
+ }
461
+
462
+ /** ########## Tabs ########## **/
463
+ @mixin tab-label-mixin {
464
+ color: map-get($lux-palette_primary, 500) !important;
465
+ }
466
+
467
+ @mixin tab-ink-bar-mixin {
468
+ background-color: $lux-selected-border-color !important;
469
+ height: 4px;
470
+ border-radius: 4px;
471
+ }
472
+
473
+ // Tabs außerhalb einer LUX-Card (z.B. Master-Detail)
474
+ lux-tabs {
475
+ .mat-tab-label-active:not(.mat-tab-disabled) {
476
+ @include tab-label-mixin;
477
+ }
478
+
479
+ .mat-tab-label:not(.mat-tab-disabled) {
480
+ &:focus {
481
+ @include focus-dark-mixin;
482
+ }
483
+
484
+ &:hover:not(.mat-tab-disabled) {
485
+ @include lux-hovered-mixin;
486
+ background-color: $app-data-bg !important;
487
+ }
488
+ }
489
+
490
+ mat-ink-bar.mat-ink-bar {
491
+ @include tab-ink-bar-mixin;
492
+ }
493
+ }
494
+
495
+ // Tabs innerhalb einer LUX-Card
496
+ mat-card lux-tabs {
497
+ .mat-tab-label-active:not(.mat-tab-disabled) {
498
+ @include tab-label-mixin;
499
+ }
500
+
501
+ .mat-tab-label:not(.mat-tab-disabled) {
502
+ &:focus {
503
+ @include focus-dark-mixin;
504
+
505
+ }
506
+
507
+ &:hover:not(.mat-tab-disabled) {
508
+ @include lux-hovered-mixin;
509
+ }
510
+ }
511
+
512
+ mat-ink-bar.mat-ink-bar {
513
+ @include tab-ink-bar-mixin;
514
+ }
515
+ }
516
+
517
+ /** ########## Stepper ########## **/
518
+ lux-stepper {
519
+ mat-step-header {
520
+ &:hover {
521
+ @include lux-hovered-mixin;
522
+ }
523
+ }
524
+
525
+ mat-step-header[tabindex="0"]:focus {
526
+ @include focus-dark-mixin;
527
+ }
528
+
529
+ lux-stepper-vertical mat-step-header[aria-selected="true"] {
530
+ @include lux-selected-mixin;
531
+ background-color: transparent;
532
+ }
533
+
534
+ lux-stepper-horizontal mat-step-header[aria-selected="true"] {
535
+ @include lux-selected-bottom-mixin;
536
+ background-color: transparent;
537
+ }
538
+
539
+ }
540
+
541
+ /** ########## Html ########## **/
542
+ lux-html {
543
+ & a[href]:focus {
544
+ @include focus-dark-mixin;
545
+ }
546
+ }
547
+
548
+ /** ########## Tile ########## **/
549
+ lux-tile {
550
+ mat-card {
551
+ &:focus {
552
+ @include focus-dark-mixin;
553
+ }
554
+
555
+ &:hover {
556
+ @include lux-hovered-mixin;
557
+ }
558
+ }
559
+ }
560
+
561
+ /** ########## Panel ########## **/
562
+ lux-panel {
563
+ mat-expansion-panel-header:not([aria-disabled='true']) {
564
+ &:focus {
565
+ background-color: white !important;
566
+ @include focus-dark-mixin;
567
+ }
568
+
569
+ &:hover {
570
+ @include lux-hovered-mixin;
571
+ }
572
+ }
573
+ }
574
+
575
+ /** ########## Master-Detail ########## **/
576
+ lux-button.lux-master-toggle button:not([disabled]):focus {
577
+ &:focus {
578
+ @include focus-bright-mixin;
579
+ }
580
+
581
+ &:hover {
582
+ @include lux-hovered-mixin;
583
+ }
584
+ }
585
+
586
+ lux-master-detail {
587
+ lux-master-header {
588
+ .lux-master-header-collapse {
589
+ button.lux-button {
590
+ // Wir benötigen hier die spezielle CSS-Abfrage um die für die Buttons zu überschreiben
591
+ // Wir nutzen $lux-hover-color, weil sich die normale lux-focus-color hier nicht genug abhebt
592
+ &:not(.mat-fab):not(.mat-raised-button):focus {
593
+ background-color: $lux-hover-color !important;
594
+ }
595
+ }
596
+ }
597
+ }
598
+ }
599
+
600
+ /** ########## File-List ########## **/
601
+ lux-file-list {
602
+ .lux-file-list {
603
+ &:focus {
604
+ @include focus-dark-mixin;
605
+ }
606
+
607
+ .lux-file-list-entry {
608
+ &:focus {
609
+ @include focus-dark-mixin;
610
+ }
611
+ }
612
+ }
613
+ }
614
+
615
+ lux-file-preview-toolbar lux-button button.lux-icon-button {
616
+ &:focus {
617
+ @include focus-bright-mixin;
618
+ }
619
+ }
620
+
621
+ /** ########## Menu ########## **/
622
+ // Class, welche das aufgeklappte Panel referenziert
623
+ .lux-menu-panel {
624
+ .lux-menu-item {
625
+ &:not([disabled="true"]) {
626
+ &:focus {
627
+ @include focus-dark-mixin;
628
+ }
629
+
630
+ &:hover {
631
+ @include lux-hovered-mixin;
632
+ }
633
+ }
634
+ }
635
+ }
636
+
637
+ /** ########## Example-Root ########## **/
638
+ example-root {
639
+ .example-base-components-list {
640
+
641
+ mat-expansion-panel-header,
642
+ .example-component-list-item {
643
+ @include lux-selectable-mixin;
644
+
645
+ &.example-component-list-item-selected {
646
+ @include lux-selected-mixin;
647
+ }
648
+
649
+ &:focus {
650
+ @include focus-dark-mixin;
651
+ }
652
+
653
+ &:hover {
654
+ @include lux-hovered-mixin;
655
+ }
656
+ }
657
+ }
658
+ }
659
+
660
+ /** ########## Message-Box ########## **/
661
+ lux-message-box {
662
+
663
+ & div.lux-message-box-content {
664
+
665
+ &:focus {
666
+ @include focus-dark-mixin;
667
+ }
668
+
669
+ & div.lux-message-container.lux-bg-color-white {
670
+ & div.lux-message-text p:focus {
671
+ @include focus-dark-mixin;
672
+ }
673
+
674
+ & button:not([disabled]):focus {
675
+ @include focus-dark-mixin;
676
+ }
677
+
678
+ & button:not([disabled]):hover {
679
+ @include lux-hovered-mixin;
680
+ }
681
+ }
682
+
683
+ & div.lux-message-container:not(.lux-bg-color-white) {
684
+ & div.lux-message-text p:focus {
685
+ @include focus-bright-mixin;
686
+ }
687
+
688
+ & button:not([disabled]):focus {
689
+ @include focus-bright-mixin;
690
+ }
691
+
692
+ & button:not([disabled]):hover {
693
+ @include lux-hovered-mixin;
694
+ color: $lux-hover-color-for-dark-background;
695
+ }
696
+ }
697
+ }
698
+ }
@@ -0,0 +1,2 @@
1
+ @import 'https://use.fontawesome.com/releases/v5.13.0/css/all.css';
2
+ @import 'https://fonts.googleapis.com/icon?family=Material+Icons';