121 lines
2.0 KiB
SCSS
121 lines
2.0 KiB
SCSS
@use 'sass:map';
|
|
@use './variables' as *;
|
|
|
|
// Mixin untuk generate typography classes
|
|
@mixin typography($name, $size, $line-height, $weight) {
|
|
.#{$name} {
|
|
font-family: $font-family-base;
|
|
font-size: $size;
|
|
line-height: $line-height;
|
|
font-weight: $weight;
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
// Base typography
|
|
* {
|
|
font-family: $font-family-base;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
body {
|
|
font-family: $font-family-base;
|
|
font-size: 16px;
|
|
line-height: 24px;
|
|
font-weight: $font-weight-regular;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
// Generate desktop typography classes - Gunakan map.get
|
|
@each $name, $props in $font-sizes {
|
|
@include typography(
|
|
$name,
|
|
map.get($props, 'size'),
|
|
map.get($props, 'line-height'),
|
|
map.get($props, 'weight')
|
|
);
|
|
}
|
|
|
|
// Generate mobile typography classes - Gunakan map.get
|
|
@media (max-width: $breakpoint-mobile) {
|
|
@each $name, $props in $font-sizes-mobile {
|
|
@include typography(
|
|
$name,
|
|
map.get($props, 'size'),
|
|
map.get($props, 'line-height'),
|
|
map.get($props, 'weight')
|
|
);
|
|
}
|
|
}
|
|
|
|
// HTML semantic tags
|
|
h1 {
|
|
@extend .headline-1;
|
|
}
|
|
|
|
h2 {
|
|
@extend .headline-2;
|
|
}
|
|
|
|
h3 {
|
|
@extend .headline-3;
|
|
}
|
|
|
|
h4 {
|
|
@extend .headline-4;
|
|
}
|
|
|
|
p {
|
|
@extend .body-1;
|
|
}
|
|
|
|
small {
|
|
@extend .caption-2;
|
|
}
|
|
|
|
// Utility classes
|
|
.text-regular {
|
|
font-weight: $font-weight-regular !important;
|
|
}
|
|
|
|
.text-medium {
|
|
font-weight: $font-weight-medium !important;
|
|
}
|
|
|
|
.text-semibold {
|
|
font-weight: $font-weight-semibold !important;
|
|
}
|
|
|
|
.text-bold {
|
|
font-weight: $font-weight-bold !important;
|
|
}
|
|
|
|
.text-uppercase {
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.5px;
|
|
}
|
|
|
|
.text-center {
|
|
text-align: center;
|
|
}
|
|
|
|
.text-left {
|
|
text-align: left;
|
|
}
|
|
|
|
.text-right {
|
|
text-align: right;
|
|
}
|
|
|
|
// Line clamp utilities
|
|
@for $i from 1 through 5 {
|
|
.line-clamp-#{$i} {
|
|
display: -webkit-box;
|
|
-webkit-line-clamp: $i;
|
|
-webkit-box-orient: vertical;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
} |