Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor(material/core): split up M3 token processing into separate f…
…iles Splits up our processing of MDC's tokens into separate files so they're a bit more manageable.
- Loading branch information
Showing
30 changed files
with
1,384 additions
and
1,236 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
@use 'sass:map'; | ||
@use 'sass:meta'; | ||
@use '../../token-utils'; | ||
|
||
// The prefix used to generate the fully qualified name for tokens in this file. | ||
$prefix: (mdc, checkbox); | ||
|
||
/// Generates the tokens for MDC checkbox | ||
/// @param {Map} $systems The MDC system tokens | ||
/// @param {Boolean} $exclude-hardcoded Whether to exclude hardcoded token values | ||
/// @param {Map} $token-slots Possible token slots | ||
/// @return {Map} A set of tokens for the MDC checkbox | ||
@function get-tokens($systems, $exclude-hardcoded, $token-slots) { | ||
$mdc-tokens: token-utils.get-mdc-tokens('checkbox', $systems, $exclude-hardcoded); | ||
$variant-tokens: ( | ||
primary: (), // Default, no overrides needed | ||
secondary: ( | ||
selected-container-color: map.get($systems, md-sys-color, secondary), | ||
selected-focus-container-color: map.get($systems, md-sys-color, secondary), | ||
selected-focus-icon-color: map.get($systems, md-sys-color, on-secondary), | ||
selected-focus-state-layer-color: map.get($systems, md-sys-color, secondary), | ||
selected-hover-container-color: map.get($systems, md-sys-color, secondary), | ||
selected-hover-icon-color: map.get($systems, md-sys-color, on-secondary), | ||
selected-hover-state-layer-color: map.get($systems, md-sys-color, secondary), | ||
selected-icon-color: map.get($systems, md-sys-color, on-secondary), | ||
selected-pressed-container-color: map.get($systems, md-sys-color, secondary), | ||
selected-pressed-icon-color: map.get($systems, md-sys-color, on-secondary), | ||
unselected-pressed-state-layer-color: map.get($systems, md-sys-color, secondary), | ||
), | ||
tertiary: ( | ||
selected-container-color: map.get($systems, md-sys-color, tertiary), | ||
selected-focus-container-color: map.get($systems, md-sys-color, tertiary), | ||
selected-focus-icon-color: map.get($systems, md-sys-color, on-tertiary), | ||
selected-focus-state-layer-color: map.get($systems, md-sys-color, tertiary), | ||
selected-hover-container-color: map.get($systems, md-sys-color, tertiary), | ||
selected-hover-icon-color: map.get($systems, md-sys-color, on-tertiary), | ||
selected-hover-state-layer-color: map.get($systems, md-sys-color, tertiary), | ||
selected-icon-color: map.get($systems, md-sys-color, on-tertiary), | ||
selected-pressed-container-color: map.get($systems, md-sys-color, tertiary), | ||
selected-pressed-icon-color: map.get($systems, md-sys-color, on-tertiary), | ||
unselected-pressed-state-layer-color: map.get($systems, md-sys-color, tertiary), | ||
), | ||
error: ( | ||
selected-container-color: map.get($systems, md-sys-color, error), | ||
selected-focus-container-color: map.get($systems, md-sys-color, error), | ||
selected-focus-icon-color: map.get($systems, md-sys-color, on-error), | ||
selected-focus-state-layer-color: map.get($systems, md-sys-color, error), | ||
selected-hover-container-color: map.get($systems, md-sys-color, error), | ||
selected-hover-icon-color: map.get($systems, md-sys-color, on-error), | ||
selected-hover-state-layer-color: map.get($systems, md-sys-color, error), | ||
selected-icon-color: map.get($systems, md-sys-color, on-error), | ||
selected-pressed-container-color: map.get($systems, md-sys-color, error), | ||
selected-pressed-icon-color: map.get($systems, md-sys-color, on-error), | ||
unselected-pressed-state-layer-color: map.get($systems, md-sys-color, error), | ||
) | ||
); | ||
|
||
@return token-utils.namespace-tokens( | ||
$prefix, | ||
( | ||
_fix-tokens($mdc-tokens), | ||
token-utils.map-values($variant-tokens, meta.get-function(_fix-tokens)) | ||
), | ||
$token-slots | ||
); | ||
} | ||
|
||
/// Renames the official checkbox tokens to match the names actually used in MDC's code (which are | ||
/// different). This is a temporary workaround until MDC updates to use the correct names for the | ||
/// tokens. | ||
/// @param {Map} $tokens The map of checkbox tokens with the official tokens names | ||
/// @param {Map} $all-tokens Map of all checkbox tokens, including hardcoded values. | ||
/// This is necessary in order to do opacity lookups. | ||
/// @return {Map} The given tokens, renamed to be compatible with MDC's token implementation. | ||
@function _fix-tokens($tokens) { | ||
// Need to get the hardcoded values, because they include opacities that are used for the disabled | ||
// state. | ||
$hardcoded-tokens: token-utils.get-mdc-tokens('checkbox', (), false); | ||
|
||
$rename-keys: ( | ||
selected-icon-color: selected-checkmark-color, | ||
selected-disabled-icon-color: disabled-selected-checkmark-color, | ||
selected-container-color: selected-icon-color, | ||
selected-hover-container-color: selected-hover-icon-color, | ||
selected-disabled-container-color: disabled-selected-icon-color, | ||
selected-disabled-container-opacity: disabled-selected-icon-opacity, | ||
selected-focus-container-color: selected-focus-icon-color, | ||
selected-pressed-container-color: selected-pressed-icon-color, | ||
unselected-disabled-outline-color: disabled-unselected-icon-color, | ||
unselected-disabled-container-opacity: disabled-unselected-icon-opacity, | ||
unselected-focus-outline-color: unselected-focus-icon-color, | ||
unselected-hover-outline-color: unselected-hover-icon-color, | ||
unselected-outline-color: unselected-icon-color, | ||
unselected-pressed-outline-color: unselected-pressed-icon-color | ||
); | ||
|
||
$remapped-tokens: token-utils.rename-map-keys($tokens, $rename-keys); | ||
$remapped-hardcoded-tokens: token-utils.rename-map-keys($hardcoded-tokens, $rename-keys); | ||
|
||
@return token-utils.combine-color-tokens($remapped-tokens, $remapped-hardcoded-tokens, ( | ||
( | ||
color: disabled-selected-icon-color, | ||
opacity: disabled-selected-icon-opacity, | ||
), | ||
( | ||
color: disabled-unselected-icon-color, | ||
opacity: disabled-unselected-icon-opacity, | ||
), | ||
)); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
@use 'sass:map'; | ||
@use '../../../style/sass-utils'; | ||
@use '../../token-utils'; | ||
|
||
// The prefix used to generate the fully qualified name for tokens in this file. | ||
$prefix: (mdc, chip); | ||
|
||
/// Generates the tokens for MDC chip | ||
/// @param {Map} $systems The MDC system tokens | ||
/// @param {Boolean} $exclude-hardcoded Whether to exclude hardcoded token values | ||
/// @param {Map} $token-slots Possible token slots | ||
/// @return {Map} A set of tokens for the MDC chip | ||
@function get-tokens($systems, $exclude-hardcoded, $token-slots) { | ||
// MDC has a chip component, but they seem to have made up the tokens rather than using ones | ||
// generated from the token database, therefore we need a custom token function for it. | ||
$tokens: sass-utils.merge-all( | ||
token-utils.generate-typography-tokens($systems, label-text, label-large), | ||
( | ||
container-shape: token-utils.hardcode(( | ||
family: rounded, | ||
radius: 8px, | ||
), $exclude-hardcoded), | ||
with-avatar-avatar-size: token-utils.hardcode(24px, $exclude-hardcoded), | ||
label-text-color: map.get($systems, md-sys-color, on-surface-variant), | ||
disabled-label-text-color: sass-utils.safe-color-change( | ||
map.get($systems, md-sys-color, on-surface), | ||
$alpha: 0.38, | ||
), | ||
with-icon-icon-size: token-utils.hardcode(18px, $exclude-hardcoded), | ||
with-icon-icon-color: map.get($systems, md-sys-color, on-surface-variant), | ||
with-icon-disabled-icon-color: map.get($systems, md-sys-color, on-surface), | ||
with-icon-selected-icon-color: map.get($systems, md-sys-color, on-secondary-container), | ||
with-trailing-icon-trailing-icon-color: map.get($systems, md-sys-color, on-surface-variant), | ||
with-trailing-icon-disabled-trailing-icon-color: map.get($systems, md-sys-color, on-surface), | ||
focus-state-layer-opacity: map.get($systems, md-sys-state, focus-state-layer-opacity), | ||
focus-state-layer-color: map.get($systems, md-sys-color, on-surface-variant), | ||
outline-width: token-utils.hardcode(1px, $exclude-hardcoded), | ||
outline-color: map.get($systems, md-sys-color, outline), | ||
disabled-outline-color: sass-utils.safe-color-change( | ||
map.get($systems, md-sys-color, on-surface), | ||
$alpha: 0.12, | ||
), | ||
focus-outline-color: map.get($systems, md-sys-color, on-surface-variant), | ||
hover-state-layer-color: map.get($systems, md-sys-color, on-surface-variant), | ||
hover-state-layer-opacity: map.get($systems, md-sys-state, hover-state-layer-opacity), | ||
with-avatar-disabled-avatar-opacity: token-utils.hardcode(0.38, $exclude-hardcoded), | ||
elevated-selected-container-color: map.get($systems, md-sys-color, secondary-container), | ||
flat-selected-outline-width: token-utils.hardcode(0, $exclude-hardcoded), | ||
selected-label-text-color: map.get($systems, md-sys-color, on-secondary-container), | ||
flat-disabled-selected-container-color: sass-utils.safe-color-change( | ||
map.get($systems, md-sys-color, on-surface), | ||
$alpha: 0.12, | ||
), | ||
selected-hover-state-layer-color: map.get($systems, md-sys-color, on-secondary-container), | ||
selected-hover-state-layer-opacity: | ||
map.get($systems, md-sys-state, hover-state-layer-opacity), | ||
selected-focus-state-layer-color: map.get($systems, md-sys-color, on-secondary-container), | ||
selected-focus-state-layer-opacity: | ||
map.get($systems, md-sys-state, focus-state-layer-opacity), | ||
with-icon-disabled-icon-opacity: token-utils.hardcode(0.38, $exclude-hardcoded), | ||
with-trailing-icon-disabled-trailing-icon-opacity: | ||
token-utils.hardcode(0.38, $exclude-hardcoded), | ||
), | ||
), ( | ||
// Color variants: | ||
primary: ( | ||
with-icon-selected-icon-color: map.get($systems, md-sys-color, on-primary-container), | ||
elevated-selected-container-color: map.get($systems, md-sys-color, primary-container), | ||
selected-label-text-color: map.get($systems, md-sys-color, on-primary-container), | ||
selected-hover-state-layer-color: map.get($systems, md-sys-color, on-primary-container), | ||
selected-focus-state-layer-color: map.get($systems, md-sys-color, on-primary-container), | ||
), | ||
secondary: (), // Default, no overrides needed. | ||
tertiary: ( | ||
with-icon-selected-icon-color: map.get($systems, md-sys-color, on-tertiary-container), | ||
elevated-selected-container-color: map.get($systems, md-sys-color, tertiary-container), | ||
selected-label-text-color: map.get($systems, md-sys-color, on-tertiary-container), | ||
selected-hover-state-layer-color: map.get($systems, md-sys-color, on-tertiary-container), | ||
selected-focus-state-layer-color: map.get($systems, md-sys-color, on-tertiary-container), | ||
), | ||
error: ( | ||
with-icon-selected-icon-color: map.get($systems, md-sys-color, on-error-container), | ||
elevated-selected-container-color: map.get($systems, md-sys-color, error-container), | ||
selected-label-text-color: map.get($systems, md-sys-color, on-error-container), | ||
selected-hover-state-layer-color: map.get($systems, md-sys-color, on-error-container), | ||
selected-focus-state-layer-color: map.get($systems, md-sys-color, on-error-container), | ||
) | ||
); | ||
|
||
@return token-utils.namespace-tokens($prefix, $tokens, $token-slots); | ||
} |
Oops, something went wrong.