@use "./base-units.scss" as *; @use "./breakpoints.scss" as *; $typography: ( "h1": ( "font-size": ( "mobile": 40px, "desktop": 40px ), "font-weight": ( "mobile": 600, "desktop": 600, ), "font-style": ( "mobile": normal, "desktop": normal, ), "line-height": ( "mobile": 120%, "desktop": 120%, ), "letter-spacing": ( "mobile": 0, "desktop": 0, ) ), "h2": ( "font-size": ( "mobile": 32px, "desktop": 32px, ), "font-weight": ( "mobile": 600, "desktop": 600, ), "font-style": ( "mobile": normal, "desktop": normal, ), "line-height": ( "mobile": 130%, "desktop": 130%, ), "letter-spacing": ( "mobile": 0, "desktop": 0, ) ), "h3": ( "font-size": ( "mobile": 28px, "desktop": 28px, ), "font-weight": ( "mobile": 600, "desktop": 600, ), "font-style": ( "mobile": normal, "desktop": normal, ), "line-height": ( "mobile": 130%, "desktop": 130%, ), "letter-spacing": ( "mobile": 0, "desktop": 0, ) ), "h6": ( "font-size": ( "mobile": 16px, "desktop": 16px, ), "font-weight": ( "mobile": 600, "desktop": 600, ), "font-style": ( "mobile": normal, "desktop": normal, ), "line-height": ( "mobile": 130%, "desktop": 130%, ), "letter-spacing": ( "mobile": 0, "desktop": 0, ) ), "body-large": ( "font-size": ( "mobile": 16px, "desktop": 16px, ), "font-weight": ( "mobile": 500, "desktop": 500, ), "font-style": ( "mobile": normal, "desktop": normal, ), "line-height": ( "mobile": 140%, "desktop": 140%, ), "letter-spacing": ( "mobile": 0.15px, "desktop": 0.15px, ) ), "body-small": ( "font-size": ( "mobile": 14px, "desktop": 14px, ), "font-weight": ( "mobile": 400, "desktop": 400, ), "font-style": ( "mobile": normal, "desktop": normal, ), "line-height": ( "mobile": 140%, "desktop": 140%, ), "letter-spacing": ( "mobile": 0.15px, "desktop": 0.15px, ) ), "body-2-regular": ( "font-size": ( "mobile": 14px, "desktop": 14px, ), "font-weight": ( "mobile": regular, "desktop": regular, ), "font-style": ( "mobile": normal, "desktop": normal, ), "line-height": ( "mobile": 140%, "desktop": 140%, ), "letter-spacing": ( "mobile": 0.15px, "desktop": 0.15px, ) ), "button-large": ( "font-size": ( "mobile": 16px, "desktop": 16px, ), "font-weight": ( "mobile": 500, "desktop": 500, ), "font-style": ( "mobile": normal, "desktop": normal, ), "line-height": ( "mobile": 120%, "desktop": 120%, ), "letter-spacing": ( "mobile": 0.15px, "desktop": 0.15px, ) ), "button-medium": ( "font-size": ( "mobile": 14px, "desktop": 14px, ), "font-weight": ( "mobile": 500, "desktop": 500, ), "font-style": ( "mobile": normal, "desktop": normal, ), "line-height": ( "mobile": 120%, "desktop": 120%, ), "letter-spacing": ( "mobile": 0.15px, "desktop": 0.15px, ) ), "button-small": ( "font-size": ( "mobile": 12px, "desktop": 12px, ), "font-weight": ( "mobile": 500, "desktop": 500, ), "font-style": ( "mobile": normal, "desktop": normal, ), "line-height": ( "mobile": 120%, "desktop": 120%, ), "letter-spacing": ( "mobile": 0.05px, "desktop": 0.05px, ) ), ); @mixin tu-typography($style) { font-family: Inter; text-align: justify; $type-map: map-get($typography, $style); $properties: ('font-size', 'font-weight', 'font-style', 'line-height', 'letter-spacing'); @each $property in $properties { @if map-has-key($type-map, $property) { $value: map-get($type-map, $property); @if type-of($value) == 'map' { // It's a responsive map with multiple breakpoints @each $breakpoint-name, $breakpoint-value in $value { // For the largest breakpoint ("desktop"), apply styles directly @if $breakpoint-name == "desktop" { #{$property}: $breakpoint-value; } // For all other breakpoints, create a media query @else { $breakpoint-width: map-get($breakpoints, $breakpoint-name); @media (max-width: #{$breakpoint-width}) { #{$property}: $breakpoint-value; } } } } @else { // It's just a static value #{$property}: $value; } } } }