@fundamental-styles/common-css 0.25.0-rc.8 → 0.25.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.
@@ -0,0 +1,1064 @@
1
+ @mixin sap-reset {
2
+ font-family: "72", "72full", Arial, Helvetica, sans-serif;
3
+ font-size: 0.875rem;
4
+ line-height: 1.375rem;
5
+ color: $fn-color-grey-10;
6
+ font-weight: normal;
7
+ box-sizing: border-box;
8
+ padding: 0;
9
+ margin: 0;
10
+ border: 0;
11
+
12
+ &::before,
13
+ &::after {
14
+ box-sizing: inherit;
15
+ font-size: inherit;
16
+ }
17
+ }
18
+
19
+ @mixin sap-rtl {
20
+ @at-root {
21
+ [dir="rtl"] &,
22
+ &[dir="rtl"] {
23
+ @content;
24
+ }
25
+ }
26
+ }
27
+
28
+ @mixin sap-transition($property: all, $duration: 150ms, $animation: ease-in) {
29
+ $fn-transition: $property $duration $animation;
30
+
31
+ -webkit-transition: $fn-transition;
32
+ -moz-transition: $fn-transition;
33
+ -ms-transition: $fn-transition;
34
+ -o-transition: $fn-transition;
35
+ transition: $fn-transition;
36
+ }
37
+
38
+ // States
39
+ @mixin sap-hover {
40
+ &:hover,
41
+ &.is-hover {
42
+ @content;
43
+ }
44
+ }
45
+
46
+ @mixin sap-empty {
47
+ &:empty,
48
+ &.is-empty {
49
+ @content;
50
+ }
51
+ }
52
+
53
+ @mixin sap-pressed {
54
+ &[aria-pressed="true"],
55
+ &.is-pressed {
56
+ @content;
57
+ }
58
+ }
59
+
60
+ @mixin sap-readonly {
61
+ &[aria-readonly="true"],
62
+ &[readonly],
63
+ &.is-readonly {
64
+ @content;
65
+ }
66
+ }
67
+
68
+ @mixin sap-selected {
69
+ &[aria-selected="true"],
70
+ &.is-selected {
71
+ @content;
72
+ }
73
+ }
74
+
75
+ @mixin sap-expanded {
76
+ &[aria-expanded="true"] {
77
+ @content;
78
+ }
79
+ }
80
+
81
+ @mixin sap-active {
82
+ &:active,
83
+ &.is-active {
84
+ @content;
85
+ }
86
+ }
87
+
88
+ @mixin sap-focus-active {
89
+ &:focus:active,
90
+ &.is-focus.is-active {
91
+ @content;
92
+ }
93
+ }
94
+
95
+ @mixin sap-disabled {
96
+ &[aria-disabled="true"],
97
+ &:disabled,
98
+ &.is-disabled {
99
+ @content;
100
+ }
101
+ }
102
+
103
+ @mixin sap-focus() {
104
+ &:focus,
105
+ &.is-focus {
106
+ @content;
107
+ }
108
+ }
109
+
110
+ @mixin sap-is-focus() {
111
+ &.is-focus {
112
+ @content;
113
+ }
114
+ }
115
+
116
+ @mixin sap-not-focus-visible() {
117
+ &:focus:not(.focus-visible) {
118
+ @content;
119
+ }
120
+ }
121
+
122
+ @mixin sap-focus-visible() {
123
+ &.focus-visible,
124
+ &.is-focus {
125
+ @content;
126
+ }
127
+ }
128
+
129
+ @mixin sap-focus-within() {
130
+ &:focus-within,
131
+ &.is-focus-within {
132
+ @content;
133
+ }
134
+ }
135
+
136
+ @mixin sap-display() {
137
+ &.is-display {
138
+ @content;
139
+ }
140
+ }
141
+
142
+ // Flex Helpers
143
+ @mixin sap-flex($direction: row) {
144
+ display: flex;
145
+ flex-direction: $direction;
146
+ @content;
147
+ }
148
+
149
+ @mixin sap-ellipsis {
150
+ white-space: nowrap;
151
+ overflow: hidden;
152
+ text-overflow: ellipsis;
153
+ }
154
+
155
+ @mixin sap-flex-center {
156
+ display: flex;
157
+ justify-content: center;
158
+ align-items: center;
159
+ @content;
160
+ }
161
+
162
+ @mixin sap-flex-vertical-center {
163
+ display: flex;
164
+ align-items: center;
165
+ @content;
166
+ }
167
+
168
+ // Set Paddings
169
+ @mixin sap-set-padding-left($left: 0) {
170
+ padding-left: $left;
171
+
172
+ @include sap-rtl() {
173
+ padding-right: $left;
174
+ padding-left: 0;
175
+ }
176
+ }
177
+
178
+ @mixin sap-set-padding-right($right: 0) {
179
+ padding-right: $right;
180
+
181
+ @include sap-rtl() {
182
+ padding-right: 0;
183
+ padding-left: $right;
184
+ }
185
+ }
186
+
187
+ @mixin sap-set-paddings-x($left: 0, $right: 0) {
188
+ padding-left: $left;
189
+ padding-right: $right;
190
+
191
+ @include sap-rtl() {
192
+ padding-right: $left;
193
+ padding-left: $right;
194
+ }
195
+ }
196
+
197
+ @mixin sap-set-paddings-x-equal($value: 0) {
198
+ padding-left: $value;
199
+ padding-right: $value;
200
+ }
201
+
202
+ @mixin sap-set-paddings-y($top: 0, $bottom: 0) {
203
+ padding-top: $top;
204
+ padding-bottom: $bottom;
205
+ }
206
+
207
+ @mixin sap-set-paddings-y-equal($value: 0) {
208
+ padding-top: $value;
209
+ padding-bottom: $value;
210
+ }
211
+
212
+ // Set position absolute
213
+ @mixin sap-set-position-right($right) {
214
+ right: $right;
215
+
216
+ @include sap-rtl() {
217
+ right: auto;
218
+ left: $right;
219
+ }
220
+ }
221
+
222
+ @mixin sap-set-position-left($left) {
223
+ left: $left;
224
+
225
+ @include sap-rtl() {
226
+ left: auto;
227
+ right: $left;
228
+ }
229
+ }
230
+
231
+ @mixin sap-user-select() {
232
+ user-select: none;
233
+ -ms-user-select: none;
234
+ -moz-user-select: none;
235
+ -webkit-user-select: none;
236
+ }
237
+
238
+ @mixin sap-set-top-right-bottom-left($top:0, $right:0, $bottom:0, $left:0) {
239
+ position: absolute;
240
+ top: $top;
241
+ right: $right;
242
+ bottom: $bottom;
243
+ left: $left;
244
+
245
+ @include sap-rtl() {
246
+ left: $right;
247
+ right: $left;
248
+ }
249
+ }
250
+
251
+ @mixin sap-set-square($size) {
252
+ width: $size;
253
+ height: $size;
254
+ }
255
+
256
+ @mixin sap-set-square-min-width($size) {
257
+ width: $size;
258
+ height: $size;
259
+ min-width: $size;
260
+ min-height: $size;
261
+ }
262
+
263
+ @mixin sap-set-rectangle($width, $height) {
264
+ width: $width;
265
+ height: $height;
266
+ }
267
+
268
+ // display mixins
269
+ $sap-display-types: inline block contents flex grid inline-block inline-flex inline-grid inline-table list-item run-in table table-caption table-column-group table-header-group table-footer-group table-row-group table-cell table-column table-row none initial inherit !default;
270
+
271
+ @mixin sap-display($type: inline) {
272
+ display: $type !important;
273
+
274
+ @content;
275
+ }
276
+
277
+ // border-radius
278
+ $sap-corner-border-radius: (
279
+ "element": var(--sapElement_BorderCornerRadius),
280
+ "button": var(--sapButton_BorderCornerRadius),
281
+ "field": var(--sapField_BorderCornerRadius),
282
+ "group": var(--sapGroup_BorderCornerRadius),
283
+ "popover": var(--sapPopover_BorderCornerRadius),
284
+ "tile": var(--sapTile_BorderCornerRadius)
285
+ );
286
+
287
+ @mixin sap-set-border-radius($value...) {
288
+ $_value: $value;
289
+
290
+ @if (map-has-key($sap-corner-border-radius, #{$value})) {
291
+ $_value: map-get($sap-corner-border-radius, #{$value});
292
+ }
293
+
294
+ border-radius: $_value;
295
+
296
+ @content;
297
+ }
298
+
299
+ // content paddings
300
+
301
+ $sap-content-paddings-home: (
302
+ "sm": 0.5rem,
303
+ "md": 2rem,
304
+ "lg": 2rem,
305
+ "xl": 3rem,
306
+ );
307
+
308
+ $sap-content-paddings-container: (
309
+ "sm": 1rem,
310
+ "md": 2rem,
311
+ "lg": 2rem,
312
+ "xl": 3rem,
313
+ );
314
+
315
+ $sap-content-paddings-nav: (
316
+ "sm": 1rem,
317
+ "md": 2rem,
318
+ "lg": 2rem,
319
+ "xl": 3rem,
320
+ );
321
+
322
+ @mixin sap-set-content-paddings($type, $value) {
323
+ @if ($type == 'home') {
324
+ padding-left: map-get($sap-content-paddings-home, $value) !important;
325
+ padding-right: map-get($sap-content-paddings-home, $value) !important;
326
+ } @else if ($type == 'container') {
327
+ padding-left: map-get($sap-content-paddings-container, $value) !important;
328
+ padding-right: map-get($sap-content-paddings-container, $value) !important;
329
+ } @else {
330
+ padding-left: map-get($sap-content-paddings-nav, $value) !important;
331
+ padding-right: map-get($sap-content-paddings-nav, $value) !important;
332
+ }
333
+ }
334
+
335
+ @mixin sap-set-dynamic-content-paddings($type) {
336
+ @include sap-media-sm() {
337
+ @include sap-set-content-paddings($type, 'sm');
338
+ }
339
+
340
+ @include sap-media-md() {
341
+ @include sap-set-content-paddings($type, 'md');
342
+ }
343
+
344
+ @include sap-media-lg() {
345
+ @include sap-set-content-paddings($type, 'lg');
346
+ }
347
+
348
+ @include sap-media-xl() {
349
+ @include sap-set-content-paddings($type, 'xl');
350
+ }
351
+ }
352
+
353
+ @mixin sap-content-paddings($type: home, $size: default) {
354
+ @if ($size == default) {
355
+ @include sap-set-dynamic-content-paddings($type);
356
+ } @else {
357
+ @include sap-set-content-paddings($type, $size);
358
+ }
359
+ }
360
+
361
+ // flex
362
+ $sap-flex-spacings: (
363
+ "tiny": 0.5rem,
364
+ "small": 1rem,
365
+ "medium": 2rem,
366
+ "large": 3rem
367
+ );
368
+
369
+ // ----------- FLEX DIRECTION -----------
370
+ @mixin sap-flex($direction: row) {
371
+ display: flex;
372
+ flex-direction: $direction;
373
+
374
+ @content;
375
+ }
376
+
377
+ // ----------- FLEX ALIGN CONTENT -----------
378
+ @mixin sap-flex-align-content($type: normal, $direction: row) {
379
+ @include sap-flex($direction) {
380
+ flex-wrap: wrap;
381
+ align-content: $type;
382
+ }
383
+
384
+ @content;
385
+ }
386
+
387
+ // ----------- FLEX ALIGN ITEMS -----------
388
+ @mixin sap-flex-align-items($type: stretch, $direction: row) {
389
+ @include sap-flex($direction) {
390
+ align-items: $type;
391
+ }
392
+
393
+ @content;
394
+ }
395
+
396
+ // ----------- FLEX GAP -----------
397
+ @mixin sap-flex-gap($value, $type: "", $direction: row) {
398
+ @include sap-flex($direction);
399
+
400
+ $_value: "";
401
+
402
+ @if $value == "tiny" {
403
+ $_value: map_get($sap-flex-spacings, "tiny");
404
+ } @else if $value == "small" {
405
+ $_value: map_get($sap-flex-spacings, "small");
406
+ } @else if $value == "medium" {
407
+ $_value: map_get($sap-flex-spacings, "medium");
408
+ } @else if $value == large {
409
+ $_value: map_get($sap-flex-spacings, "large");
410
+ } @else {
411
+ $_value: $value;
412
+ }
413
+
414
+ @if $type == "" {
415
+ gap: $_value;
416
+ } @else {
417
+ #{$type}-gap: $_value;
418
+ }
419
+
420
+ @content;
421
+ }
422
+
423
+ // ----------- FLEX JUSTIFY CONTENT -----------
424
+ @mixin sap-flex-justify($type: flex-start, $direction: row) {
425
+ @include sap-flex($direction) {
426
+ justify-content: $type;
427
+ }
428
+
429
+ @content;
430
+ }
431
+
432
+ // ----------- FLEX WRAP -----------
433
+ @mixin sap-flex-wrap($type: nowrap, $direction: row) {
434
+ @include sap-flex($direction) {
435
+ flex-wrap: $type;
436
+ }
437
+
438
+ @content;
439
+ }
440
+
441
+ // ----------- FLEX CENTER -----------
442
+ @mixin sap-flex-center($direction: row) {
443
+ @include sap-flex() {
444
+ align-items: center;
445
+ justify-content: center;
446
+ flex-direction: $direction;
447
+ }
448
+
449
+ @content;
450
+ }
451
+
452
+ // ----------- FLEX ORDER -----------
453
+ @mixin sap-flex-order($value: 0) {
454
+ order: $value;
455
+
456
+ @content;
457
+ }
458
+
459
+ // ----------- FLEX GROW -----------
460
+ @mixin sap-flex-grow($value) {
461
+ flex-grow: $value;
462
+
463
+ @content;
464
+ }
465
+
466
+ // ----------- FLEX SHRINK -----------
467
+ @mixin sap-flex-shrink($value) {
468
+ flex-shrink: $value;
469
+
470
+ @content;
471
+ }
472
+
473
+ // ----------- FLEX ALIGN SELF -----------
474
+ @mixin sap-flex-align-self($value) {
475
+ align-self: $value;
476
+
477
+ @content;
478
+ }
479
+
480
+ // ----------- FLEX CHILD -----------
481
+ @mixin sap-flex-child($value) {
482
+ flex: $value;
483
+
484
+ @content;
485
+ }
486
+
487
+ // MARGINS
488
+
489
+ $sap-margins: (
490
+ "tiny": 0.5rem,
491
+ "small": 1rem,
492
+ "medium": 2rem,
493
+ "large": 3rem
494
+ );
495
+
496
+ $sap-container-sides: (
497
+ "top": top,
498
+ "bottom": bottom,
499
+ "begin": left,
500
+ "end": right,
501
+ "x": horizontal,
502
+ "y": vertical
503
+ );
504
+
505
+ @mixin sap-set-margin-all($value: 0) {
506
+ margin: $value;
507
+ }
508
+
509
+ @mixin sap-set-margin-top($value: 0) {
510
+ margin-top: $value;
511
+ }
512
+
513
+ @mixin sap-set-margin-bottom($value: 0) {
514
+ margin-bottom: $value;
515
+ }
516
+
517
+ @mixin sap-set-margin-begin($value: 0) {
518
+ margin-left: $value;
519
+
520
+ @include sap-rtl() {
521
+ margin-left: 0;
522
+ margin-right: $value;
523
+ }
524
+ }
525
+
526
+ @mixin sap-set-margin-end($value: 0) {
527
+ margin-right: $value;
528
+
529
+ @include sap-rtl() {
530
+ margin-right: 0;
531
+ margin-left: $value;
532
+ }
533
+ }
534
+
535
+ @mixin sap-set-margin-x-equal($value: 0) {
536
+ margin-right: $value;
537
+ margin-left: $value;
538
+ }
539
+
540
+ @mixin sap-set-margin-y-equal($value: 0) {
541
+ margin-top: $value;
542
+ margin-bottom: $value;
543
+ }
544
+
545
+ @mixin sap-set-margin-x($valueLeft: 0, $valueRight: 0) {
546
+ margin-left: $valueLeft;
547
+ margin-right: $valueRight;
548
+
549
+ @include sap-rtl() {
550
+ margin-left: $valueRight;
551
+ margin-right: $valueLeft;
552
+ }
553
+ }
554
+
555
+ @mixin sap-set-margin-y($valueTop: 0, $valueBottom: 0) {
556
+ margin-top: $valueTop;
557
+ margin-bottom: $valueBottom;
558
+ }
559
+
560
+ @mixin sap-margin($value, $side: '') {
561
+ $_value: $value !important;
562
+
563
+ @if (map-has-key($sap-margins, #{$value})) {
564
+ $_value: map-get($sap-margins, #{$value}) !important;
565
+ }
566
+
567
+ @if ($side != '') {
568
+ @if ($side == top) {
569
+ @include sap-set-margin-top($_value);
570
+ } @else if($side == bottom) {
571
+ @include sap-set-margin-bottom($_value);
572
+ } @else if($side == begin) {
573
+ @include sap-set-margin-begin($_value);
574
+ } @else if($side == end) {
575
+ @include sap-set-margin-end($_value);
576
+ } @else if($side == x) {
577
+ @include sap-set-margin-x-equal($_value);
578
+ } @else if($side == y) {
579
+ @include sap-set-margin-y-equal($_value);
580
+ }
581
+ } @else {
582
+ @include sap-set-margin-all($_value);
583
+ }
584
+ }
585
+
586
+ @mixin sap-margin-responsive() {
587
+ @include sap-media-sm() {
588
+ margin: 0 0 1rem 0 !important;
589
+ }
590
+
591
+ @include sap-media-md() {
592
+ margin: 1rem !important;
593
+ }
594
+
595
+ @include sap-media-lg() {
596
+ margin: 1rem 2rem !important;
597
+ }
598
+
599
+ @include sap-media-xl() {
600
+ margin: 1rem 3rem !important;
601
+ }
602
+ }
603
+
604
+ // MEDIA QUERIES
605
+ $small: 600px;
606
+ $medium: 1024px;
607
+ $large: 1440px;
608
+ $offset: 1px;
609
+
610
+ @mixin sap-media-sm() {
611
+ @media (max-width: #{$small - $offset}) {
612
+ @content;
613
+ }
614
+ }
615
+
616
+ @mixin sap-media-md() {
617
+ @media (min-width: #{$small}) and (max-width: #{$medium - $offset}) {
618
+ @content;
619
+ }
620
+ }
621
+
622
+ @mixin sap-media-lg() {
623
+ @media (min-width: #{$medium}) and (max-width: #{$large - $offset}) {
624
+ @content;
625
+ }
626
+ }
627
+
628
+ @mixin sap-media-xl() {
629
+ @media (min-width: #{$large}) {
630
+ @content;
631
+ }
632
+ }
633
+
634
+ @mixin sap-media-min-width($width) {
635
+ @media (min-width: $width) {
636
+ @content;
637
+ }
638
+ }
639
+
640
+ @mixin sap-media-max-width($width) {
641
+ @media (max-width: $width) {
642
+ @content;
643
+ }
644
+ }
645
+
646
+ @mixin sap-media-range-width($minWidth, $maxWidth) {
647
+ @media (min-width: $minWidth) and (max-width: $maxWidth) {
648
+ @content;
649
+ }
650
+ }
651
+
652
+ @mixin sap-media-print() {
653
+ @media print {
654
+ @content;
655
+ }
656
+ }
657
+
658
+ @mixin sap-media-orientation($orientation) {
659
+ @media (orientation: $orientation) {
660
+ @content;
661
+ }
662
+ }
663
+
664
+ // PADDINGS
665
+ $sap-paddings: (
666
+ "tiny": 0.5rem,
667
+ "small": 1rem,
668
+ "medium": 2rem,
669
+ "large": 3rem
670
+ );
671
+
672
+ $sap-container-sides: (
673
+ "top": top,
674
+ "bottom": bottom,
675
+ "begin": left,
676
+ "end": right,
677
+ "x": horizontal,
678
+ "y": vertical
679
+ );
680
+
681
+ @mixin sap-set-padding-all($value: 0) {
682
+ padding: $value;
683
+ }
684
+
685
+ @mixin sap-set-padding-top($value: 0) {
686
+ padding-top: $value;
687
+ }
688
+
689
+ @mixin sap-set-padding-bottom($value: 0) {
690
+ padding-bottom: $value;
691
+ }
692
+
693
+ @mixin sap-set-padding-begin($value: 0) {
694
+ padding-left: $value;
695
+
696
+ @include sap-rtl() {
697
+ padding-left: 0;
698
+ padding-right: $value;
699
+ }
700
+ }
701
+
702
+ @mixin sap-set-padding-end($value: 0) {
703
+ padding-right: $value;
704
+
705
+ @include sap-rtl() {
706
+ padding-right: 0;
707
+ padding-left: $value;
708
+ }
709
+ }
710
+
711
+ @mixin sap-set-padding-x-equal($value: 0) {
712
+ padding-right: $value;
713
+ padding-left: $value;
714
+ }
715
+
716
+ @mixin sap-set-padding-y-equal($value: 0) {
717
+ padding-top: $value;
718
+ padding-bottom: $value;
719
+ }
720
+
721
+ @mixin sap-set-padding-x($valueLeft: 0, $valueRight: 0) {
722
+ padding-left: $valueLeft;
723
+ padding-right: $valueRight;
724
+
725
+ @include sap-rtl() {
726
+ padding-left: $valueRight;
727
+ padding-right: $valueLeft;
728
+ }
729
+ }
730
+
731
+ @mixin sap-set-padding-y($valueTop: 0, $valueBottom: 0) {
732
+ padding-top: $valueTop;
733
+ padding-bottom: $valueBottom;
734
+ }
735
+
736
+ @mixin sap-padding($value: 1rem, $side: '') {
737
+ $_value: $value !important;
738
+
739
+ @if (map-has-key($sap-paddings, #{$value})) {
740
+ $_value: map-get($sap-paddings, #{$value}) !important;
741
+ }
742
+
743
+ @if ($side != '') {
744
+ @if ($side == top) {
745
+ @include sap-set-padding-top($_value);
746
+ } @else if($side == bottom) {
747
+ @include sap-set-padding-bottom($_value);
748
+ } @else if($side == begin) {
749
+ @include sap-set-padding-begin($_value);
750
+ } @else if($side == end) {
751
+ @include sap-set-padding-end($_value);
752
+ } @else if($side == x) {
753
+ @include sap-set-padding-x-equal($_value);
754
+ } @else if($side == y) {
755
+ @include sap-set-padding-y-equal($_value);
756
+ }
757
+ } @else {
758
+ @include sap-set-padding-all($_value);
759
+ }
760
+ }
761
+
762
+ @mixin sap-padding-responsive() {
763
+ @include sap-media-sm() {
764
+ @include sap-padding(small, x);
765
+ @include sap-padding(0, y);
766
+ }
767
+
768
+ @include sap-media-md() {
769
+ @include sap-padding(medium, x);
770
+ @include sap-padding(0, y);
771
+ }
772
+
773
+ @include sap-media-lg() {
774
+ @include sap-padding(medium, x);
775
+ @include sap-padding(0, y);
776
+ }
777
+
778
+ @include sap-media-xl() {
779
+ @include sap-padding(large, x);
780
+ @include sap-padding(0, y);
781
+ }
782
+ }
783
+
784
+ // SHADOWS
785
+ $sap-box-shadow-types: (
786
+ "level-0": var(--sapContent_Shadow0),
787
+ "level-1": var(--sapContent_Shadow1),
788
+ "level-2": var(--sapContent_Shadow2),
789
+ "level-3": var(--sapContent_Shadow3),
790
+ "header": var(--sapContent_HeaderShadow),
791
+ "shell": var(--sapShell_Shadow),
792
+ "none": none,
793
+ );
794
+
795
+ $sap-text-shadow-types: (
796
+ "text": var(--sapContent_TextShadow),
797
+ "contrast-text": var(--sapContent_ContrastTextShadow),
798
+ "group-title-text": var(--sapShell_GroupTitleTextShadow),
799
+ "emphasized-text": var(--sapButton_Emphasized_TextShadow),
800
+ );
801
+
802
+ @mixin sap-set-box-shadow($value) {
803
+ box-shadow: $value;
804
+ }
805
+
806
+ @mixin sap-set-text-shadow($value) {
807
+ text-shadow: $value;
808
+ }
809
+
810
+ @mixin sap-shadow($type) {
811
+ @if (map-has-key($sap-box-shadow-types , #{$type} )) {
812
+ @include sap-set-box-shadow(map-get($sap-box-shadow-types, #{$type}));
813
+ } @else if (map-has-key($sap-text-shadow-types , #{$type} )) {
814
+ @include sap-set-text-shadow(map-get($sap-text-shadow-types, #{$type}));
815
+ } @else {
816
+ @warn "Unknown type of shadow";
817
+ }
818
+ }
819
+
820
+ @mixin sap-sr-only() {
821
+ position: absolute;
822
+ clip: rect(0, 0, 0, 0);
823
+ height: 1px;
824
+ width: 1px;
825
+ border: 0;
826
+ margin: -1px;
827
+ padding: 0;
828
+ overflow: hidden;
829
+ white-space: nowrap;
830
+
831
+ @content;
832
+ }
833
+
834
+ // TYPOGRAPHY
835
+ $sap-font-types: (
836
+ "regular": var(--sapFontFamily),
837
+ "light": var(--sapFontLightFamily),
838
+ "bold": var(--sapFontBoldFamily),
839
+ "semibold": var(--sapFontSemiboldFamily),
840
+ "semibold-duplex": var(--sapFontSemiboldDuplexFamily),
841
+ "monospaced-regular": var(--sapContent_MonospaceFontFamily),
842
+ "monospaced-bold": var(--sapContent_MonospaceBoldFontFamily),
843
+ "black": var(--sapFontBlackFamily),
844
+ "header": var(--sapFontHeaderFamily),
845
+ );
846
+
847
+ // FONT FAMILY
848
+ @mixin sap-font-family($type) {
849
+ @if ($type == "regular") {
850
+ font-family: map-get($sap-font-types, "regular");
851
+ } @else if ($type == "light") {
852
+ font-family: map-get($sap-font-types, "light");
853
+ } @else if ($type == "bold") {
854
+ font-family: map-get($sap-font-types, "bold");
855
+ } @else if ($type == "semibold") {
856
+ font-family: map-get($sap-font-types, "semibold");
857
+ } @else if ($type == "semibold-duplex") {
858
+ font-family: map-get($sap-font-types, "semibold-duplex");
859
+ } @else if ($type == "monospaced-regular") {
860
+ font-family: map-get($sap-font-types, "monospaced-regular");
861
+ } @else if ($type == "monospaced-bold") {
862
+ font-family: map-get($sap-font-types, "monospaced-bold");
863
+ } @else if ($type == "black") {
864
+ font-family: map-get($sap-font-types, "black");
865
+ } @else if ($type == "header") {
866
+ font-family: map-get($sap-font-types, "header");
867
+ } @else {
868
+ font-family: $type;
869
+ }
870
+ }
871
+
872
+ // FONT SIZE
873
+ $sap-font-sizes: (
874
+ "header-6": var(--sapFontHeader6Size),
875
+ "header-5": var(--sapFontHeader5Size),
876
+ "header-4": var(--sapFontHeader4Size),
877
+ "header-3": var(--sapFontHeader3Size),
878
+ "header-2": var(--sapFontHeader2Size),
879
+ "header-1": var(--sapFontHeader1Size),
880
+ "small": var(--sapFontSmallSize),
881
+ "medium": var(--sapFontSize),
882
+ "large": var(--sapFontLargeSize),
883
+ );
884
+
885
+ @mixin sap-font-size($size) {
886
+ @if ($size == "header-6") {
887
+ font-size: map-get($sap-font-sizes, "header-6");
888
+ } @else if ($size == "header-5") {
889
+ font-size: map-get($sap-font-sizes, "header-5");
890
+ } @else if ($size == "header-4") {
891
+ font-size: map-get($sap-font-sizes, "header-4");
892
+ } @else if ($size == "header-3") {
893
+ font-size: map-get($sap-font-sizes, "header-3");
894
+ } @else if ($size == "header-2") {
895
+ font-size: map-get($sap-font-sizes, "header-2");
896
+ } @else if ($size == "header-1") {
897
+ font-size: map-get($sap-font-sizes, "header-1");
898
+ } @else if ($size == "small") {
899
+ font-size: map-get($sap-font-sizes, "small");
900
+ } @else if ($size == "medium") {
901
+ font-size: map-get($sap-font-sizes, "medium");
902
+ } @else if ($size == "large") {
903
+ font-size: map-get($sap-font-sizes, "large");
904
+ } @else {
905
+ font-size: $size;
906
+ }
907
+ }
908
+
909
+ // LINE HEIGHT
910
+ @mixin sap-font-line-height($value: normal) {
911
+ line-height: $value;
912
+ }
913
+
914
+ // COMMON CASES
915
+ @mixin sap-font($type) {
916
+ @if ($type == header-3) {
917
+ font-family: var(--sapFontHeaderFamily);
918
+ font-size: var(--sapFontHeader3Size);
919
+ color: var(--sapGroup_TitleTextColor);
920
+ } @else {
921
+ font-family: var(--sapFontFamily);
922
+
923
+ @if ($type == standard-text) {
924
+ font-size: var(--sapFontSize);
925
+ color: var(--sapTextColor);
926
+ } @else if($type == small-detail-text) {
927
+ font-size: var(--sapFontSmallSize);
928
+ color: var(--sapContent_LabelColor);
929
+ } @else if($type == standard-field-text) {
930
+ font-size: var(--sapFontSize);
931
+ color: var(--sapField_TextColor);
932
+ } @else {
933
+ font-size: var(--sapFontSize);
934
+ color: var(--sapContent_LabelColor);
935
+ }
936
+ }
937
+ @content;
938
+ }
939
+
940
+ // BORDER
941
+ @mixin sap-border($width, $style, $color, $pos: all) {
942
+ $_border: $width $style $color;
943
+
944
+ @if ($pos == "top") {
945
+ border-top: $_border;
946
+ } @else if ($pos == "bottom") {
947
+ border-bottom: $_border;
948
+ } @else if ($pos == "left") {
949
+ border-left: $_border;
950
+
951
+ @include sap-rtl() {
952
+ border-left: none;
953
+ border-right: $_border;
954
+ }
955
+ } @else if ($pos == "right") {
956
+ border-right: $_border;
957
+
958
+ @include sap-rtl() {
959
+ border-left: $_border;
960
+ border-right: none;
961
+ }
962
+ } @else if ($pos == "x") {
963
+ border-left: $_border;
964
+ border-right: $_border;
965
+ } @else if ($pos == "y") {
966
+ border-top: $_border;
967
+ border-bottom: $_border;
968
+ } @else if ($pos == "all") {
969
+ border: $_border;
970
+ } @else {
971
+ border: $_border;
972
+ }
973
+ }
974
+
975
+ // FOCUS
976
+ @mixin sap-fiori-focus($offset: -0.1875rem, $alternative: false) {
977
+ &:focus,
978
+ &.is-focus {
979
+ outline-offset: $offset;
980
+ outline-width: var(--sapContent_FocusWidth);
981
+ outline-style: var(--sapContent_FocusStyle);
982
+
983
+ @if $alternative == true {
984
+ outline-color: var(--sapContent_ContrastFocusColor);
985
+ } @else {
986
+ outline-color: var(--sapContent_FocusColor);
987
+ }
988
+
989
+ @content;
990
+ }
991
+ }
992
+
993
+ @mixin sap-fiori-focus-within($offset: -0.1875rem, $alternative: false) {
994
+ &:focus-within,
995
+ &.is-focus-within {
996
+ outline-offset: $offset;
997
+ outline-width: var(--sapContent_FocusWidth);
998
+ outline-style: var(--sapContent_FocusStyle);
999
+
1000
+ @if $alternative == true {
1001
+ outline-color: var(--sapContent_ContrastFocusColor);
1002
+ } @else {
1003
+ outline-color: var(--sapContent_FocusColor);
1004
+ }
1005
+
1006
+ @content;
1007
+ }
1008
+ }
1009
+
1010
+ @mixin sap-fake-fiori-focus($offset: 0, $radius: 0, $alternative: false) {
1011
+ &:focus,
1012
+ &.is-focus {
1013
+ outline: none;
1014
+ position: relative;
1015
+
1016
+ &::after {
1017
+ @if $alternative == true {
1018
+ border-color: var(--sapContent_ContrastFocusColor);
1019
+ } @else {
1020
+ border-color: var(--sapContent_FocusColor);
1021
+ }
1022
+
1023
+ border-width: var(--sapContent_FocusWidth);
1024
+ border-style: var(--sapContent_FocusStyle);
1025
+ border-radius: $radius;
1026
+ content: '';
1027
+ position: absolute;
1028
+ pointer-events: none;
1029
+ top: $offset;
1030
+ bottom: $offset;
1031
+ left: $offset;
1032
+ right: $offset;
1033
+ @content;
1034
+ }
1035
+ }
1036
+ }
1037
+
1038
+ @mixin sap-fake-fiori-focus-within($offset: 0, $radius: 0, $alternative: false) {
1039
+ &:focus-within,
1040
+ &.is-focus-within {
1041
+ outline: none;
1042
+ position: relative;
1043
+
1044
+ &::after {
1045
+ @if $alternative == true {
1046
+ border-color: var(--sapContent_ContrastFocusColor);
1047
+ } @else {
1048
+ border-color: var(--sapContent_FocusColor);
1049
+ }
1050
+
1051
+ border-width: var(--sapContent_FocusWidth);
1052
+ border-style: var(--sapContent_FocusStyle);
1053
+ border-radius: $radius;
1054
+ content: '';
1055
+ position: absolute;
1056
+ pointer-events: none;
1057
+ top: $offset;
1058
+ bottom: $offset;
1059
+ left: $offset;
1060
+ right: $offset;
1061
+ @content;
1062
+ }
1063
+ }
1064
+ }