angular / components

Component infrastructure and Material Design components for Angular
https://material.angular.io
MIT License
24.39k stars 6.76k forks source link

feat(theming): Mixins for reading component style tokens #30083

Open martinboue opened 16 hours ago

martinboue commented 16 hours ago

Feature Description

Mixins to get values from a component theme that takes a token as parameter, for example:

p {
   color: @include mat.button-get(text-label-text-color);
}

it would generate:

p {
   color: var(--mdc-outlined-button-label-text-color, var(--mat-sys-primary)); // <== Actual value used for text-button
}

Ideally, we would have as many mixins as there are components (+core) and we could use the same tokens as the mat.<component>-overrides mixins.

The mat.<component>-get mixin name is a proposal, open to suggestions.

Use Case

I have a custom component and I want to apply the same style as a material component. I also want to make sure that they are always in sync when I change my theme.

For example, I want to have a text <p> with the same font color as my mat-button next to it.

For now, I need to rely on private CSS variables to do that, which is not ideal for maintainability.