From d4d6cde11a9160842096c500c05423a636bf548c Mon Sep 17 00:00:00 2001 From: Ali Stump Date: Fri, 8 Dec 2023 17:18:44 -0800 Subject: [PATCH 01/19] feat(font tokens): add fallback fonts to core --- .../calcite-design-tokens/src/core/font.json | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/packages/calcite-design-tokens/src/core/font.json b/packages/calcite-design-tokens/src/core/font.json index 34d47ff73db..9c2b8dfbe6d 100644 --- a/packages/calcite-design-tokens/src/core/font.json +++ b/packages/calcite-design-tokens/src/core/font.json @@ -10,9 +10,44 @@ "value": "Avenir Next World", "type": "fontFamilies" }, + "avenir": { + "value": "Avenir", + "type": "fontFamilies", + "description": "Fallback for avenirNext" + }, + "helveticaNeue": { + "value": "Helvetica Neue", + "type": "fontFamilies", + "description": "Fallback for avenirNext" + }, + "sansSerif": { + "value": "sans-serif", + "type": "fontFamilies", + "description": "Fallback for avenirNext" + }, + "consolas": { + "value": "Consolas", + "type": "fontFamilies", + "description": "Fallback for monaco" + }, + "andaleMono": { + "value": "Andale Mono", + "type": "fontFamilies", + "description": "Fallback for monaco" + }, + "lucidaConsole": { + "value": "Lucida Console", + "type": "fontFamilies", + "description": "Fallback for monaco" + }, "monaco": { "value": "Monaco", "type": "fontFamilies" + }, + "monospace": { + "value": "monospace", + "type": "fontFamilies", + "description": "Fallback for monaco" } }, "style": { From a2d20bd07ab6c092d904a5e596d034e965cacedf Mon Sep 17 00:00:00 2001 From: Ali Stump Date: Fri, 8 Dec 2023 17:19:03 -0800 Subject: [PATCH 02/19] feat(font tokens): add fallback fonts to semantic tokens --- .../src/semantic/font.json | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/calcite-design-tokens/src/semantic/font.json b/packages/calcite-design-tokens/src/semantic/font.json index d0ea467ca5a..2d723738c62 100644 --- a/packages/calcite-design-tokens/src/semantic/font.json +++ b/packages/calcite-design-tokens/src/semantic/font.json @@ -3,12 +3,26 @@ "font": { "family": { "default": { - "value": "{core.font.family.avenirNextPro}", - "type": "fontFamilies" + "value": [ + "{core.font.family.avenirNextWorld}", + "{core.font.family.avenirNextPro}", + "{core.font.family.avenir}", + "{core.font.family.helveticaNeue}", + "{core.font.family.sansSerif}" + ], + "type": "fontFamilies", + "description": "Primary font with fallbacks" }, "code": { - "value": "{core.font.family.monaco}", - "type": "fontFamilies" + "value": [ + "{core.font.family.monaco}", + "{core.font.family.consolas}", + "{core.font.family.andaleMono}", + "{core.font.family.lucidaConsole}", + "{core.font.family.monospace}" + ], + "type": "fontFamilies", + "description": "Font family for code with fallbacks" } }, "weight": { From bc2c8c922748cfcb826dfe4200d6b1358524aac8 Mon Sep 17 00:00:00 2001 From: Ali Stump Date: Fri, 8 Dec 2023 17:30:37 -0800 Subject: [PATCH 03/19] feat(token transformer): allow font family tokens to output fallbacks --- .../registerCalciteTransformers.ts | 12 ++++--- .../styleDictionary/transformer/utils.ts | 2 ++ .../value/valueFontFamilyFallbacks.ts | 32 +++++++++++++++++++ 3 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 packages/calcite-design-tokens/support/token-transformer/styleDictionary/transformer/value/valueFontFamilyFallbacks.ts diff --git a/packages/calcite-design-tokens/support/token-transformer/registerCalciteTransformers.ts b/packages/calcite-design-tokens/support/token-transformer/registerCalciteTransformers.ts index f46ab2f4c56..8a5e58d2ef8 100644 --- a/packages/calcite-design-tokens/support/token-transformer/registerCalciteTransformers.ts +++ b/packages/calcite-design-tokens/support/token-transformer/registerCalciteTransformers.ts @@ -18,6 +18,7 @@ import { registerValueRGBA } from "./styleDictionary/transformer/value/valueRGBA import { registerNameSpacePath } from "./styleDictionary/transformer/name/nameSpacePath.js"; import { registerFormatterDocs } from "./styleDictionary/formatter/docs.js"; import { registerValueToREM } from "./styleDictionary/transformer/value/valueToREM.js"; +import { registerValueFontFamilyWithFallbacks } from "./styleDictionary/transformer/value/valueFontFamilyFallbacks.js"; export async function registerCalciteTransformers(sd: StyleDictionary): Promise { // Here we are registering the Transforms provided by Token Studio however, @@ -27,21 +28,22 @@ export async function registerCalciteTransformers(sd: StyleDictionary): Promise< await registerTransforms(sd, { expand: false, }); - registerValueRGBA(sd); - registerValueEvaluateMath(sd); registerAttributePlatformNames(sd); registerCustomJSONParser(sd); registerFilterSource(sd); registerFormatterCss(sd); - registerFormatterScss(sd); + registerFormatterDocs(sd); registerFormatterJs(sd); + registerFormatterScss(sd); registerNameCamelCase(sd); registerNameJoinPath(sd); registerNameKebabCase(sd); + registerNameSpacePath(sd); registerValueAlignFontWeightAndStyles(sd); registerValueAssetToken(sd); + registerValueEvaluateMath(sd); + registerValueFontFamilyWithFallbacks(sd); + registerValueRGBA(sd); registerValueStringWrapper(sd); - registerNameSpacePath(sd); - registerFormatterDocs(sd); registerValueToREM(sd); } diff --git a/packages/calcite-design-tokens/support/token-transformer/styleDictionary/transformer/utils.ts b/packages/calcite-design-tokens/support/token-transformer/styleDictionary/transformer/utils.ts index d1b2edd1c2b..a3e975a3c01 100644 --- a/packages/calcite-design-tokens/support/token-transformer/styleDictionary/transformer/utils.ts +++ b/packages/calcite-design-tokens/support/token-transformer/styleDictionary/transformer/utils.ts @@ -15,6 +15,7 @@ import { valueEvaluateMath } from "./value/valueCheckEvaluateMath.js"; import { CalciteValueRGBA } from "./value/valueRGBA.js"; import { nameSpacePath } from "./name/nameSpacePath.js"; import { CalciteValueToREM } from "./value/valueToREM.js"; +import { valueFontFamilyFallbacks } from "./value/valueFontFamilyFallbacks.js"; export type TransformerTypeUnion = `${TransformerTypeEnum}`; @@ -51,6 +52,7 @@ export const styles = [ valueAssetToken, valueStringWrapper, CalciteValueToREM, + valueFontFamilyFallbacks, nameKebabCase, ]; diff --git a/packages/calcite-design-tokens/support/token-transformer/styleDictionary/transformer/value/valueFontFamilyFallbacks.ts b/packages/calcite-design-tokens/support/token-transformer/styleDictionary/transformer/value/valueFontFamilyFallbacks.ts new file mode 100644 index 00000000000..c3dd5651391 --- /dev/null +++ b/packages/calcite-design-tokens/support/token-transformer/styleDictionary/transformer/value/valueFontFamilyFallbacks.ts @@ -0,0 +1,32 @@ +import { Core as StyleDictionary } from "style-dictionary"; +import { Matcher } from "style-dictionary/types/Matcher.js"; +import { TransformedToken } from "style-dictionary/types/TransformedToken.js"; +import { TokenTypes } from "@tokens-studio/types"; + +import { CalledTransformerFunction, TransformerConfig } from "../utils.js"; + +export const matcher: Matcher = (token: TransformedToken) => { + return token.type === TokenTypes.FONT_FAMILIES && Array.isArray(token.value); +}; + +type FontFamilyFallbackToken = TransformedToken & { value: string[] }; + +export const transformValuesFontFamilyWithFallbacks: CalledTransformerFunction = ( + token: FontFamilyFallbackToken +) => { + return token.value.join(" "); +}; + +export const registerValueFontFamilyWithFallbacks = (sd: StyleDictionary): void => { + const transformerConfig: TransformerConfig = { + name: valueFontFamilyFallbacks, + transformer: transformValuesFontFamilyWithFallbacks, + type: "value", + matcher, + transitive: true, + }; + + sd.registerTransform(transformerConfig); +}; + +export const valueFontFamilyFallbacks = "value/calcite/font-family"; From 37906ab90211bd27fe72181cc12935063a12d7dd Mon Sep 17 00:00:00 2001 From: Ali Stump Date: Fri, 8 Dec 2023 17:49:03 -0800 Subject: [PATCH 04/19] fix(calcite-components): should only reference font-family tokens --- .../calcite-components/.storybook/main.ts | 2 +- .../.storybook/preview-head.html | 2 +- packages/calcite-components/calcite-preset.ts | 4 +- .../src/assets/styles/global.scss | 10 ++--- .../src/components/action/action.scss | 20 ++++----- .../block-section/block-section.scss | 13 +++--- .../list-item-group/list-item-group.scss | 2 +- .../src/components/list-item/list-item.scss | 44 +++++++++---------- .../navigation-user/navigation-user.scss | 17 ++++--- .../src/components/stack/stack.scss | 12 ++--- .../src/components/text-area/text-area.scss | 7 --- .../src/demos/_assets/demos.css | 2 +- .../src/demos/accordion.html | 2 +- .../calcite-components/src/demos/action.html | 2 +- .../calcite-components/src/demos/alert.html | 2 +- .../calcite-components/src/demos/avatar.html | 2 +- .../calcite-components/src/demos/block.html | 2 +- .../calcite-components/src/demos/button.html | 2 +- .../calcite-components/src/demos/card.html | 2 +- .../src/demos/checkbox.html | 2 +- .../src/demos/chip-group.html | 2 +- .../calcite-components/src/demos/chip.html | 2 +- .../src/demos/color-picker.html | 2 +- .../src/demos/combobox.html | 2 +- .../src/demos/date-picker.html | 2 +- .../src/demos/dropdown.html | 2 +- .../calcite-components/src/demos/fab.html | 2 +- .../flow-and-panel-action-menu-overflow.html | 2 +- .../calcite-components/src/demos/flow.html | 2 +- .../calcite-components/src/demos/form.html | 2 +- .../calcite-components/src/demos/graph.html | 2 +- .../calcite-components/src/demos/icon.html | 2 +- .../src/demos/inline-editable.html | 2 +- .../src/demos/input-date-picker.html | 2 +- .../src/demos/input-number.html | 2 +- .../src/demos/input-text.html | 2 +- .../src/demos/input-time-zone.html | 2 +- .../calcite-components/src/demos/input.html | 2 +- .../calcite-components/src/demos/label.html | 2 +- .../calcite-components/src/demos/link.html | 2 +- .../calcite-components/src/demos/list.html | 2 +- .../calcite-components/src/demos/loader.html | 2 +- .../calcite-components/src/demos/meter.html | 2 +- .../calcite-components/src/demos/modal.html | 2 +- .../calcite-components/src/demos/notice.html | 2 +- .../src/demos/pagination.html | 2 +- .../calcite-components/src/demos/panel.html | 2 +- .../src/demos/pick-list.html | 2 +- .../calcite-components/src/demos/popover.html | 2 +- .../src/demos/progress.html | 2 +- .../src/demos/radio-button-group.html | 2 +- .../src/demos/radio-button.html | 2 +- .../calcite-components/src/demos/rating.html | 2 +- .../calcite-components/src/demos/scrim.html | 2 +- .../src/demos/segmented-control.html | 2 +- .../calcite-components/src/demos/select.html | 2 +- .../calcite-components/src/demos/sheet.html | 2 +- .../calcite-components/src/demos/slider.html | 2 +- .../src/demos/sortable-list.html | 2 +- .../src/demos/split-button.html | 2 +- .../calcite-components/src/demos/stack.html | 2 +- .../calcite-components/src/demos/stepper.html | 2 +- .../calcite-components/src/demos/switch.html | 2 +- .../calcite-components/src/demos/tabs.html | 2 +- .../src/demos/text-area.html | 2 +- .../src/demos/tile-select.html | 2 +- .../src/demos/tip-manager.html | 2 +- .../calcite-components/src/demos/tooltip.html | 2 +- .../calcite-components/src/demos/tree.html | 2 +- .../src/demos/value-list.html | 2 +- 70 files changed, 115 insertions(+), 136 deletions(-) diff --git a/packages/calcite-components/.storybook/main.ts b/packages/calcite-components/.storybook/main.ts index 3fed5be29d1..e527bc33c82 100644 --- a/packages/calcite-components/.storybook/main.ts +++ b/packages/calcite-components/.storybook/main.ts @@ -53,7 +53,7 @@ module.exports = { closable kind="warning" scale="l" - style="font-family: var(--calcite-sans-family)" + style="font-family: var(--calcite-font-family)" >
This storybook is on the current @next version and is meant for internal, testing purposes only. diff --git a/packages/calcite-components/.storybook/preview-head.html b/packages/calcite-components/.storybook/preview-head.html index 9a0cd427b33..4ba1c7c5c66 100644 --- a/packages/calcite-components/.storybook/preview-head.html +++ b/packages/calcite-components/.storybook/preview-head.html @@ -5,7 +5,7 @@