Tovar
Tovar

Reputation: 455

Angular Material 18 typescale levels

I upgraded to Angular 18 (and adjusted the theming styles to the Material 3 SCSS API), but I can't figure out how to define typography scale levels (font sizes) with the new API. It used to be done like this:

$my-custom-typography-config: mat.m2-define-typography-config(
  $headline-1: mat.m2-define-typography-level(112px, 112px, 300, $letter-spacing: -0.05em),
  $headline-2: mat.m2-define-typography-level(56px, 56px, 400, $letter-spacing: -0.02em),
  $headline-3: mat.m2-define-typography-level(45px, 48px, 400, $letter-spacing: -0.005em),
  $headline-4: mat.m2-define-typography-level(34px, 40px, 400),
  $headline-5: mat.m2-define-typography-level(24px, 32px, 400),
  // ...
);

But i can't find anything similar in the new theming docs. The best I've found is this: https://v18.material.angular.io/guide/typography#type-scale-levelss but it doesn't provide an example.

How can I do this?

Upvotes: 13

Views: 2358

Answers (3)

LorisBachert
LorisBachert

Reputation: 321

Havent found an official documentation but as the font-sizes are set in "rem" you can just set the font-size of your root element:

:root {
    font-size: 24px;
}

Upvotes: 0

Tasnim Reza
Tasnim Reza

Reputation: 6060

If you don't want granular level control then you can use typography along with theme set up

@use "@angular/material" as mat;
@include mat.core();

$light-theme: mat.define-theme(
 (
  color: (
    theme-type: light,
    primary: $azure-palette,
    tertiary: $azure-palette
  ),
  typography: (
    brand-family: "your-font",
    plain-family: "your-font",
    bold-weight: 500,
    medium-weight: 400,
    regular-weight: 200
  ),
  density: (
    scale: 0
  )
 )
 );

Upvotes: 0

Matthieu Riegler
Matthieu Riegler

Reputation: 55669

The doc around this is still missing but if you set your theme to use the system variables with use-system-variables you'll get a set of tokens to set all the size you want (see the source).

$my-theme: mat.define-theme(
  (
    color: (
      theme-type: light,
      primary: mat.$azure-palette,
      tertiary: mat.$blue-palette,
    ),
    density: (
      scale: 0,
    ),
    typography: (
      use-system-variables: true, // this here
    ),
  )
);

:root {
  @include mat.all-component-themes($my-theme);
  @include mat.system-level-typography($my-theme);
}

And here is the list with the current default values

    --sys-body-large: 400 1rem / 1.5rem Roboto, sans-serif;
    --sys-body-large-font: Roboto, sans-serif;
    --sys-body-large-line-height: 1.5rem;
    --sys-body-large-size: 1rem;
    --sys-body-large-tracking: 0.031rem;
    --sys-body-large-weight: 400;
    --sys-body-medium: 400 0.875rem / 1.25rem Roboto, sans-serif;
    --sys-body-medium-font: Roboto, sans-serif;
    --sys-body-medium-line-height: 1.25rem;
    --sys-body-medium-size: 0.875rem;
    --sys-body-medium-tracking: 0.016rem;
    --sys-body-medium-weight: 400;
    --sys-body-small: 400 0.75rem / 1rem Roboto, sans-serif;
    --sys-body-small-font: Roboto, sans-serif;
    --sys-body-small-line-height: 1rem;
    --sys-body-small-size: 0.75rem;
    --sys-body-small-tracking: 0.025rem;
    --sys-body-small-weight: 400;
    --sys-display-large: 400 3.562rem / 4rem Roboto, sans-serif;
    --sys-display-large-font: Roboto, sans-serif;
    --sys-display-large-line-height: 4rem;
    --sys-display-large-size: 3.562rem;
    --sys-display-large-tracking: -0.016rem;
    --sys-display-large-weight: 400;
    --sys-display-medium: 400 2.812rem / 3.25rem Roboto, sans-serif;
    --sys-display-medium-font: Roboto, sans-serif;
    --sys-display-medium-line-height: 3.25rem;
    --sys-display-medium-size: 2.812rem;
    --sys-display-medium-tracking: 0rem;
    --sys-display-medium-weight: 400;
    --sys-display-small: 400 2.25rem / 2.75rem Roboto, sans-serif;
    --sys-display-small-font: Roboto, sans-serif;
    --sys-display-small-line-height: 2.75rem;
    --sys-display-small-size: 2.25rem;
    --sys-display-small-tracking: 0rem;
    --sys-display-small-weight: 400;
    --sys-headline-large: 400 2rem / 2.5rem Roboto, sans-serif;
    --sys-headline-large-font: Roboto, sans-serif;
    --sys-headline-large-line-height: 2.5rem;
    --sys-headline-large-size: 2rem;
    --sys-headline-large-tracking: 0rem;
    --sys-headline-large-weight: 400;
    --sys-headline-medium: 400 1.75rem / 2.25rem Roboto, sans-serif;
    --sys-headline-medium-font: Roboto, sans-serif;
    --sys-headline-medium-line-height: 2.25rem;
    --sys-headline-medium-size: 1.75rem;
    --sys-headline-medium-tracking: 0rem;
    --sys-headline-medium-weight: 400;
    --sys-headline-small: 400 1.5rem / 2rem Roboto, sans-serif;
    --sys-headline-small-font: Roboto, sans-serif;
    --sys-headline-small-line-height: 2rem;
    --sys-headline-small-size: 1.5rem;
    --sys-headline-small-tracking: 0rem;
    --sys-headline-small-weight: 400;
    --sys-label-large: 500 0.875rem / 1.25rem Roboto, sans-serif;
    --sys-label-large-font: Roboto, sans-serif;
    --sys-label-large-line-height: 1.25rem;
    --sys-label-large-size: 0.875rem;
    --sys-label-large-tracking: 0.006rem;
    --sys-label-large-weight: 500;
    --sys-label-large-weight-prominent: 700;
    --sys-label-medium: 500 0.75rem / 1rem Roboto, sans-serif;
    --sys-label-medium-font: Roboto, sans-serif;
    --sys-label-medium-line-height: 1rem;
    --sys-label-medium-size: 0.75rem;
    --sys-label-medium-tracking: 0.031rem;
    --sys-label-medium-weight: 500;
    --sys-label-medium-weight-prominent: 700;
    --sys-label-small: 500 0.688rem / 1rem Roboto, sans-serif;
    --sys-label-small-font: Roboto, sans-serif;
    --sys-label-small-line-height: 1rem;
    --sys-label-small-size: 0.688rem;
    --sys-label-small-tracking: 0.031rem;
    --sys-label-small-weight: 500;
    --sys-title-large: 400 1.375rem / 1.75rem Roboto, sans-serif;
    --sys-title-large-font: Roboto, sans-serif;
    --sys-title-large-line-height: 1.75rem;
    --sys-title-large-size: 1.375rem;
    --sys-title-large-tracking: 0rem;
    --sys-title-large-weight: 400;
    --sys-title-medium: 500 1rem / 1.5rem Roboto, sans-serif;
    --sys-title-medium-font: Roboto, sans-serif;
    --sys-title-medium-line-height: 1.5rem;
    --sys-title-medium-size: 1rem;
    --sys-title-medium-tracking: 0.009rem;
    --sys-title-medium-weight: 500;
    --sys-title-small: 500 0.875rem / 1.25rem Roboto, sans-serif;
    --sys-title-small-font: Roboto, sans-serif;
    --sys-title-small-line-height: 1.25rem;
    --sys-title-small-size: 0.875rem;
    --sys-title-small-tracking: 0.006rem;
    --sys-title-small-weight: 500;

Upvotes: 10

Related Questions