@motion-proto/live-tokens 0.91.2 → 0.93.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.claude/skills/live-tokens-create-page/SKILL.md +10 -3
  2. package/.claude/skills/live-tokens-set-type/SKILL.md +3 -3
  3. package/CHANGELOG.md +171 -0
  4. package/bin/lib/tokenVocabulary.mjs +2 -2
  5. package/bin/rules/testRuns.mjs +1 -1
  6. package/bin/rules/tokens.mjs +3 -3
  7. package/dist-plugin/chunk-7XSUHJUH.js +1652 -0
  8. package/dist-plugin/index.cjs +950 -15
  9. package/dist-plugin/index.js +1 -1
  10. package/dist-plugin/setType/index.cjs +23 -2
  11. package/dist-plugin/setType/index.js +23 -2
  12. package/dist-plugin/tokensCssMigrations/index.cjs +954 -15
  13. package/dist-plugin/tokensCssMigrations/index.d.cts +23 -3
  14. package/dist-plugin/tokensCssMigrations/index.d.ts +23 -3
  15. package/dist-plugin/tokensCssMigrations/index.js +5 -1
  16. package/package.json +1 -1
  17. package/src/app/site.css +243 -9
  18. package/src/demo/TestingLoops.svelte +9 -9
  19. package/src/editor/core/fonts/weightCoverage.ts +31 -2
  20. package/src/editor/core/palettes/tokenRegistry.ts +36 -37
  21. package/src/editor/core/store/editorKeybindings.ts +1 -1
  22. package/src/editor/core/themes/parsers/mediaBlocks.ts +46 -0
  23. package/src/editor/core/typeScale/typeScale.ts +341 -0
  24. package/src/editor/skill-atlas/SourcePane.svelte +3 -3
  25. package/src/editor/skill-atlas/skillSources.generated.ts +2 -2
  26. package/src/editor/skill-atlas/trees/create-page.ts +14 -14
  27. package/src/editor/skill-atlas/trees/set-type.ts +2 -2
  28. package/src/editor/ui/UIFontFamilySelector.svelte +5 -1
  29. package/src/editor/ui/UIFontWeightSelector.svelte +4 -0
  30. package/src/editor/ui/UILetterSpacingSelector.svelte +4 -0
  31. package/src/editor/ui/UILineHeightSelector.svelte +4 -0
  32. package/src/editor/ui/UITextTransformSelector.svelte +4 -0
  33. package/src/editor/ui/UIVariantSelector.svelte +6 -8
  34. package/src/editor/ui/VariablesTab.svelte +4 -4
  35. package/src/editor/ui/colors/ColorsTab.svelte +99 -5
  36. package/src/editor/ui/colors/paletteBaseColor.ts +17 -0
  37. package/src/editor/ui/sections/textStyles.ts +44 -92
  38. package/src/editor/ui/text-styles/ControlBody.svelte +100 -0
  39. package/src/editor/ui/text-styles/ResetIcon.svelte +60 -0
  40. package/src/editor/ui/text-styles/StepRow.svelte +330 -0
  41. package/src/editor/ui/text-styles/StyleControl.svelte +128 -0
  42. package/src/editor/ui/text-styles/TextStylesSection.svelte +551 -0
  43. package/src/editor/ui/text-styles/textStyleEdits.ts +308 -0
  44. package/src/editor/ui/variantScales.ts +16 -0
  45. package/src/system/styles/tokens.css +412 -48
  46. package/src/testing-js/page-compliance.contract.js +233 -80
  47. package/src/testing-js/page-compliance.contract.js.map +1 -1
  48. package/dist-plugin/chunk-GWMEYBZ2.js +0 -715
  49. package/src/editor/ui/TextStylesSection.svelte +0 -171
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var tokensCssMigrations_exports = {};
32
32
  __export(tokensCssMigrations_exports, {
33
33
  TOKENS_CSS_MIGRATIONS: () => TOKENS_CSS_MIGRATIONS,
34
+ appendMediaBlock: () => appendMediaBlock,
34
35
  collectDefinedTokens: () => collectDefinedTokens,
35
36
  collectReferencedTokens: () => collectReferencedTokens,
36
37
  collectTokenValues: () => collectTokenValues,
@@ -44,6 +45,7 @@ __export(tokensCssMigrations_exports, {
44
45
  runAdditiveTokensCssMigrations: () => runAdditiveTokensCssMigrations,
45
46
  runTokensCssMigrations: () => runTokensCssMigrations,
46
47
  semverBumpType: () => semverBumpType,
48
+ setTokenValue: () => setTokenValue,
47
49
  validateTokensCss: () => validateTokensCss
48
50
  });
49
51
  module.exports = __toCommonJS(tokensCssMigrations_exports);
@@ -59,6 +61,43 @@ function extractGlobalRootBody(source) {
59
61
  return bodies.join("\n");
60
62
  }
61
63
 
64
+ // src/editor/core/themes/parsers/mediaBlocks.ts
65
+ function stripMediaBlocks(css) {
66
+ const kept = [];
67
+ let from = 0;
68
+ let i = 0;
69
+ while (i < css.length) {
70
+ if (css.startsWith("/*", i)) {
71
+ i = commentEnd(css, i);
72
+ } else if (css[i] === "@" && /^@media\b/i.test(css.slice(i, i + 7))) {
73
+ kept.push(css.slice(from, i));
74
+ i = from = blockEnd(css, i);
75
+ } else {
76
+ i++;
77
+ }
78
+ }
79
+ kept.push(css.slice(from));
80
+ return kept.join("");
81
+ }
82
+ function commentEnd(css, start) {
83
+ const end = css.indexOf("*/", start + 2);
84
+ return end === -1 ? css.length : end + 2;
85
+ }
86
+ function blockEnd(css, start) {
87
+ let depth = 0;
88
+ let i = start;
89
+ while (i < css.length) {
90
+ if (css.startsWith("/*", i)) {
91
+ i = commentEnd(css, i);
92
+ continue;
93
+ }
94
+ const c = css[i++];
95
+ if (c === "{") depth++;
96
+ else if (c === "}" && --depth === 0) return i;
97
+ }
98
+ return css.length;
99
+ }
100
+
62
101
  // vite-plugin/tokensCssMigrations/cssTokenOps.ts
63
102
  var DECL_RE = /(^|[\s;{])(--[a-z0-9-]+)\s*:/gi;
64
103
  var REF_RE = /var\(\s*(--[a-z0-9-]+)/gi;
@@ -70,7 +109,7 @@ function collectDefinedTokens(css) {
70
109
  }
71
110
  function collectTokenValues(css) {
72
111
  const out = /* @__PURE__ */ new Map();
73
- for (const m of css.matchAll(DECL_VALUE_RE)) out.set(m[2], m[3].trim());
112
+ for (const m of stripMediaBlocks(css).matchAll(DECL_VALUE_RE)) out.set(m[2], m[3].trim());
74
113
  return out;
75
114
  }
76
115
  function collectReferencedTokens(css) {
@@ -113,6 +152,58 @@ function removeTokensMatching(css, predicate) {
113
152
  if (kept.length === lines.length) return css;
114
153
  return kept.join("\n");
115
154
  }
155
+ function setTokenValue(css, name, value, opts = {}) {
156
+ const lines = css.split("\n");
157
+ const declRe = new RegExp("(^|[\\s;{])(" + escapeRe(name) + ")(\\s*:)([^;}]*)");
158
+ let changed = false;
159
+ for (const root of findTopLevelRoots(lines)) {
160
+ let depth = 1;
161
+ for (let i = root.start + 1; i < root.end; i++) {
162
+ if (depth === 1) {
163
+ const m = lines[i].match(declRe);
164
+ const current = m?.[4].trim();
165
+ if (m && current !== value && (opts.from === void 0 || current === opts.from.trim())) {
166
+ const at = m.index + m[1].length + m[2].length + m[3].length;
167
+ lines[i] = lines[i].slice(0, at) + " " + value + lines[i].slice(at + m[4].length);
168
+ changed = true;
169
+ }
170
+ }
171
+ depth += braceDelta(lines[i]);
172
+ }
173
+ }
174
+ return changed ? lines.join("\n") : css;
175
+ }
176
+ function appendMediaBlock(css, query, entries) {
177
+ const lines = css.split("\n");
178
+ const at = query.trim();
179
+ const blocks = findTopLevelBlocks(lines, (line) => mediaQueryOf(line) === at);
180
+ const declared = collectDefinedTokens(
181
+ blocks.map((b) => lines.slice(b.start, b.end + 1).join("\n")).join("\n")
182
+ );
183
+ const missing = entries.filter((e) => !declared.has(e.name));
184
+ if (missing.length === 0) return css;
185
+ const media = blocks.find((b) => b.end > b.start);
186
+ if (!media) {
187
+ const block = [`@media ${at} {`, " :root {", ...declarationLines(missing, " "), " }", "}", ""];
188
+ while (lines.length > 0 && lines[lines.length - 1].trim() === "") lines.pop();
189
+ return [...lines, "", ...block].join("\n");
190
+ }
191
+ const root = findNestedRoot(lines, media);
192
+ if (!root) {
193
+ lines.splice(media.end, 0, " :root {", ...declarationLines(missing, " "), " }");
194
+ return lines.join("\n");
195
+ }
196
+ let indent = (lines[root.end].match(/^\s*/)?.[0] ?? "") + " ";
197
+ for (let i = root.start + 1; i < root.end; i++) {
198
+ const m = lines[i].match(/^(\s*)--[a-z0-9-]+\s*:/i);
199
+ if (m) indent = m[1];
200
+ }
201
+ lines.splice(root.end, 0, ...declarationLines(missing, indent));
202
+ return lines.join("\n");
203
+ }
204
+ function declarationLines(entries, indent) {
205
+ return entries.map((e) => `${indent}${e.name}: ${e.value};`);
206
+ }
116
207
  function findInsertionPoint(lines, anchorPrefixes) {
117
208
  const root = findTopLevelRoot(lines);
118
209
  if (!root) return { indent: " ", insertAfter: lines.length - 1 };
@@ -131,7 +222,7 @@ function findInsertionPoint(lines, anchorPrefixes) {
131
222
  }
132
223
  }
133
224
  }
134
- depth += (line.match(/\{/g)?.length ?? 0) - (line.match(/\}/g)?.length ?? 0);
225
+ depth += braceDelta(line);
135
226
  }
136
227
  for (const prefix of anchorPrefixes) {
137
228
  const hit = lastByPrefix.get(prefix);
@@ -139,22 +230,52 @@ function findInsertionPoint(lines, anchorPrefixes) {
139
230
  }
140
231
  return { indent: lastDecl?.indent ?? " ", insertAfter: root.end - 1 };
141
232
  }
233
+ var ROOT_OPEN_RE = /(^|[\s,]):root[^{]*\{/;
142
234
  function findTopLevelRoot(lines) {
235
+ return findTopLevelRoots(lines)[0] ?? null;
236
+ }
237
+ function findTopLevelRoots(lines) {
238
+ return findTopLevelBlocks(lines, (line) => ROOT_OPEN_RE.test(line));
239
+ }
240
+ function findTopLevelBlocks(lines, opens) {
241
+ const blocks = [];
143
242
  let depth = 0;
144
243
  for (let i = 0; i < lines.length; i++) {
145
- const line = lines[i];
146
- if (depth === 0 && /(^|[\s,]):root[^{]*\{/.test(line)) {
147
- let d = 0;
148
- for (let j = i; j < lines.length; j++) {
149
- d += (lines[j].match(/\{/g)?.length ?? 0) - (lines[j].match(/\}/g)?.length ?? 0);
150
- if (d === 0) return { start: i, end: j };
151
- }
152
- return { start: i, end: lines.length - 1 };
244
+ if (depth === 0 && opens(lines[i])) {
245
+ const end = blockEnd2(lines, i);
246
+ blocks.push({ start: i, end });
247
+ i = end;
248
+ continue;
249
+ }
250
+ depth += braceDelta(lines[i]);
251
+ }
252
+ return blocks;
253
+ }
254
+ function findNestedRoot(lines, parent) {
255
+ let depth = 1;
256
+ for (let i = parent.start + 1; i < parent.end; i++) {
257
+ if (depth === 1 && ROOT_OPEN_RE.test(lines[i])) {
258
+ const end = blockEnd2(lines, i);
259
+ if (end > i && end < parent.end) return { start: i, end };
153
260
  }
154
- depth += (line.match(/\{/g)?.length ?? 0) - (line.match(/\}/g)?.length ?? 0);
261
+ depth += braceDelta(lines[i]);
155
262
  }
156
263
  return null;
157
264
  }
265
+ function blockEnd2(lines, start) {
266
+ let depth = 0;
267
+ for (let j = start; j < lines.length; j++) {
268
+ depth += braceDelta(lines[j]);
269
+ if (depth === 0) return j;
270
+ }
271
+ return lines.length - 1;
272
+ }
273
+ function mediaQueryOf(line) {
274
+ return line.match(/^\s*@media\s+([^{]*?)\s*\{/i)?.[1] ?? null;
275
+ }
276
+ function braceDelta(line) {
277
+ return (line.match(/\{/g)?.length ?? 0) - (line.match(/\}/g)?.length ?? 0);
278
+ }
158
279
  function escapeRe(s) {
159
280
  return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
160
281
  }
@@ -371,11 +492,12 @@ var BUNDLE = [
371
492
  { name: "--body-sm-font-weight", value: "var(--font-weight-normal)" },
372
493
  { name: "--body-sm-line-height", value: "var(--line-height-tight)" },
373
494
  { name: "--body-sm-letter-spacing", value: "var(--letter-spacing-normal)" },
495
+ // The code bundle's size, leading and tracking belong to 2026-10-08-type-scales,
496
+ // which renames them to `--code-md-*`. An additive migration must not re-add
497
+ // names a later breaking rename removes, or re-running the fold loses
498
+ // idempotency.
374
499
  { name: "--code-font-family", value: "var(--font-mono)" },
375
- { name: "--code-font-size", value: "var(--font-size-sm)" },
376
500
  { name: "--code-font-weight", value: "var(--font-weight-normal)" },
377
- { name: "--code-line-height", value: "var(--line-height-normal)" },
378
- { name: "--code-letter-spacing", value: "var(--letter-spacing-normal)" },
379
501
  { name: "--eyebrow-font-family", value: "var(--font-sans)" },
380
502
  { name: "--eyebrow-font-size", value: "var(--font-size-sm)" },
381
503
  { name: "--eyebrow-font-weight", value: "var(--font-weight-normal)" },
@@ -679,6 +801,820 @@ var tokensCssMigration_2026_09_21_tintColorAndOpacity = {
679
801
  }
680
802
  };
681
803
 
804
+ // vite-plugin/tokensCssMigrations/migrations/2026-10-08-type-scales.ts
805
+ var RENAMES3 = [
806
+ ["--code-font-size", "--code-md-font-size"],
807
+ ["--code-line-height", "--code-md-line-height"],
808
+ ["--code-letter-spacing", "--code-md-letter-spacing"]
809
+ ];
810
+ var CARRIED = [
811
+ {
812
+ prefix: "--heading-xl",
813
+ size: "var(--font-size-4xl)",
814
+ links: [
815
+ { name: "--heading-xl-font-family", from: "var(--font-display)", to: "var(--heading-font-family)" },
816
+ { name: "--heading-xl-font-weight", from: "var(--font-weight-semibold)", to: "var(--heading-font-weight)" }
817
+ ]
818
+ },
819
+ {
820
+ prefix: "--heading-lg",
821
+ size: "var(--font-size-2xl)",
822
+ links: [
823
+ { name: "--heading-lg-font-family", from: "var(--font-display)", to: "var(--heading-font-family)" },
824
+ { name: "--heading-lg-font-weight", from: "var(--font-weight-semibold)", to: "var(--heading-font-weight)" }
825
+ ]
826
+ },
827
+ {
828
+ prefix: "--heading-md",
829
+ size: "var(--font-size-xl)",
830
+ links: [
831
+ { name: "--heading-md-font-family", from: "var(--font-display)", to: "var(--heading-font-family)" },
832
+ { name: "--heading-md-font-weight", from: "var(--font-weight-semibold)", to: "var(--heading-font-weight)" }
833
+ ]
834
+ },
835
+ {
836
+ // heading-sm keeps the sans face it shipped with, so only its weight links.
837
+ prefix: "--heading-sm",
838
+ size: "var(--font-size-lg)",
839
+ links: [
840
+ { name: "--heading-sm-font-weight", from: "var(--font-weight-semibold)", to: "var(--heading-font-weight)" }
841
+ ]
842
+ },
843
+ {
844
+ prefix: "--body-md",
845
+ size: "var(--font-size-md)",
846
+ links: [
847
+ { name: "--body-md-font-family", from: "var(--font-sans)", to: "var(--body-font-family)" },
848
+ { name: "--body-md-font-weight", from: "var(--font-weight-normal)", to: "var(--body-font-weight)" }
849
+ ]
850
+ },
851
+ {
852
+ prefix: "--body-sm",
853
+ size: "var(--font-size-sm)",
854
+ links: [
855
+ { name: "--body-sm-font-family", from: "var(--font-sans)", to: "var(--body-font-family)" },
856
+ { name: "--body-sm-font-weight", from: "var(--font-weight-normal)", to: "var(--body-font-weight)" }
857
+ ]
858
+ },
859
+ {
860
+ // 0.91.2 had no code-md face or weight: `--code-font-family` and
861
+ // `--code-font-weight` keep their names as the code usage's settings.
862
+ prefix: "--code-md",
863
+ size: "var(--font-size-sm)",
864
+ links: []
865
+ },
866
+ {
867
+ prefix: "--editorial-xl",
868
+ size: "var(--font-size-xl)",
869
+ links: [
870
+ { name: "--editorial-xl-font-family", from: "var(--font-editorial)", to: "var(--editorial-font-family)" },
871
+ { name: "--editorial-xl-font-weight", from: "var(--font-weight-normal)", to: "var(--editorial-font-weight)" }
872
+ ]
873
+ },
874
+ {
875
+ prefix: "--editorial-lg",
876
+ size: "var(--font-size-lg)",
877
+ links: [
878
+ { name: "--editorial-lg-font-family", from: "var(--font-editorial)", to: "var(--editorial-font-family)" },
879
+ { name: "--editorial-lg-font-weight", from: "var(--font-weight-normal)", to: "var(--editorial-font-weight)" }
880
+ ]
881
+ },
882
+ {
883
+ prefix: "--editorial-md",
884
+ size: "var(--font-size-md)",
885
+ links: [
886
+ { name: "--editorial-md-font-family", from: "var(--font-editorial)", to: "var(--editorial-font-family)" },
887
+ { name: "--editorial-md-font-weight", from: "var(--font-weight-normal)", to: "var(--editorial-font-weight)" }
888
+ ]
889
+ },
890
+ {
891
+ prefix: "--editorial-sm",
892
+ size: "var(--font-size-sm)",
893
+ links: [
894
+ { name: "--editorial-sm-font-family", from: "var(--font-editorial)", to: "var(--editorial-font-family)" },
895
+ { name: "--editorial-sm-font-weight", from: "var(--font-weight-normal)", to: "var(--editorial-font-weight)" }
896
+ ]
897
+ },
898
+ {
899
+ prefix: "--eyebrow",
900
+ size: "var(--font-size-sm)",
901
+ links: [
902
+ { name: "--eyebrow-font-family", from: "var(--font-sans)", to: "var(--body-font-family)" },
903
+ { name: "--eyebrow-font-weight", from: "var(--font-weight-normal)", to: "var(--body-font-weight)" }
904
+ ]
905
+ }
906
+ ];
907
+ var COMPRESSION = [
908
+ { name: "--type-tablet-scale-compression", value: "0.75" },
909
+ { name: "--type-phone-scale-compression", value: "0.63" }
910
+ ];
911
+ var COMPRESSED_VIEWPORTS = ["tablet", "phone"];
912
+ function literalRem(size) {
913
+ const m = /^(-?\d*\.?\d+)(rem|px)$/.exec(size.trim());
914
+ if (!m) return null;
915
+ return m[2] === "rem" ? Number(m[1]) : Number(m[1]) / 16;
916
+ }
917
+ var ALIAS = /^var\(\s*(--[a-z0-9-]+)\s*\)$/i;
918
+ function resolvedRem(size, values) {
919
+ const seen = /* @__PURE__ */ new Set();
920
+ let value = size.trim();
921
+ for (let ref = ALIAS.exec(value); ref; ref = ALIAS.exec(value)) {
922
+ const next = values.get(ref[1]);
923
+ if (next === void 0 || seen.has(ref[1])) return null;
924
+ seen.add(ref[1]);
925
+ value = next.trim();
926
+ }
927
+ return literalRem(value);
928
+ }
929
+ function editedSizes(prefix, rem) {
930
+ const count = String(Number(rem.toFixed(4)));
931
+ return COMPRESSED_VIEWPORTS.map((viewport) => ({
932
+ name: `${prefix}-${viewport}-font-size`,
933
+ value: `min(var(${prefix}-desktop-font-size), calc(pow(${count}, var(--type-${viewport}-scale-compression)) * 1rem))`
934
+ }));
935
+ }
936
+ var USAGES = [
937
+ {
938
+ usage: "display",
939
+ comment: "Display: type outside the page outline, such as heroes, section titles and big numbers",
940
+ follows: "type",
941
+ settings: [
942
+ { name: "--display-font-family", value: "var(--font-display)" },
943
+ { name: "--display-font-weight", value: "var(--font-weight-semibold)" },
944
+ { name: "--display-scale-base", value: "3" },
945
+ { name: "--display-scale-ratio", value: "1.2" }
946
+ ],
947
+ steps: [
948
+ {
949
+ prefix: "--display-2xl",
950
+ entries: [
951
+ { name: "--display-2xl-font-family", value: "var(--display-font-family)" },
952
+ { name: "--display-2xl-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), 3) * 1rem)" },
953
+ { name: "--display-2xl-tablet-font-size", value: "min(var(--display-2xl-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 3), var(--type-tablet-scale-compression)) * 1rem))" },
954
+ { name: "--display-2xl-phone-font-size", value: "min(var(--display-2xl-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 3), var(--type-phone-scale-compression)) * 1rem))" },
955
+ { name: "--display-2xl-font-size", value: "var(--display-2xl-desktop-font-size)" },
956
+ { name: "--display-2xl-font-weight", value: "var(--display-font-weight)" },
957
+ { name: "--display-2xl-line-height", value: "var(--line-height-tightest)" },
958
+ { name: "--display-2xl-letter-spacing", value: "var(--letter-spacing-tight)" }
959
+ ]
960
+ },
961
+ {
962
+ prefix: "--display-xl",
963
+ entries: [
964
+ { name: "--display-xl-font-family", value: "var(--display-font-family)" },
965
+ { name: "--display-xl-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), 2) * 1rem)" },
966
+ { name: "--display-xl-tablet-font-size", value: "min(var(--display-xl-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 2), var(--type-tablet-scale-compression)) * 1rem))" },
967
+ { name: "--display-xl-phone-font-size", value: "min(var(--display-xl-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 2), var(--type-phone-scale-compression)) * 1rem))" },
968
+ { name: "--display-xl-font-size", value: "var(--display-xl-desktop-font-size)" },
969
+ { name: "--display-xl-font-weight", value: "var(--display-font-weight)" },
970
+ { name: "--display-xl-line-height", value: "var(--line-height-tightest)" },
971
+ { name: "--display-xl-letter-spacing", value: "var(--letter-spacing-tight)" }
972
+ ]
973
+ },
974
+ {
975
+ prefix: "--display-lg",
976
+ entries: [
977
+ { name: "--display-lg-font-family", value: "var(--display-font-family)" },
978
+ { name: "--display-lg-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), 1) * 1rem)" },
979
+ { name: "--display-lg-tablet-font-size", value: "min(var(--display-lg-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 1), var(--type-tablet-scale-compression)) * 1rem))" },
980
+ { name: "--display-lg-phone-font-size", value: "min(var(--display-lg-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 1), var(--type-phone-scale-compression)) * 1rem))" },
981
+ { name: "--display-lg-font-size", value: "var(--display-lg-desktop-font-size)" },
982
+ { name: "--display-lg-font-weight", value: "var(--display-font-weight)" },
983
+ { name: "--display-lg-line-height", value: "var(--line-height-tightest)" },
984
+ { name: "--display-lg-letter-spacing", value: "var(--letter-spacing-tight)" }
985
+ ]
986
+ },
987
+ {
988
+ prefix: "--display-md",
989
+ entries: [
990
+ { name: "--display-md-font-family", value: "var(--display-font-family)" },
991
+ { name: "--display-md-desktop-font-size", value: "calc(var(--display-scale-base) * 1rem)" },
992
+ { name: "--display-md-tablet-font-size", value: "min(var(--display-md-desktop-font-size), calc(pow(var(--display-scale-base), var(--type-tablet-scale-compression)) * 1rem))" },
993
+ { name: "--display-md-phone-font-size", value: "min(var(--display-md-desktop-font-size), calc(pow(var(--display-scale-base), var(--type-phone-scale-compression)) * 1rem))" },
994
+ { name: "--display-md-font-size", value: "var(--display-md-desktop-font-size)" },
995
+ { name: "--display-md-font-weight", value: "var(--display-font-weight)" },
996
+ { name: "--display-md-line-height", value: "var(--line-height-tightest)" },
997
+ { name: "--display-md-letter-spacing", value: "var(--letter-spacing-normal)" }
998
+ ]
999
+ },
1000
+ {
1001
+ prefix: "--display-sm",
1002
+ entries: [
1003
+ { name: "--display-sm-font-family", value: "var(--display-font-family)" },
1004
+ { name: "--display-sm-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), -1) * 1rem)" },
1005
+ { name: "--display-sm-tablet-font-size", value: "min(var(--display-sm-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -1), var(--type-tablet-scale-compression)) * 1rem))" },
1006
+ { name: "--display-sm-phone-font-size", value: "min(var(--display-sm-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -1), var(--type-phone-scale-compression)) * 1rem))" },
1007
+ { name: "--display-sm-font-size", value: "var(--display-sm-desktop-font-size)" },
1008
+ { name: "--display-sm-font-weight", value: "var(--display-font-weight)" },
1009
+ { name: "--display-sm-line-height", value: "var(--line-height-tighter)" },
1010
+ { name: "--display-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
1011
+ ]
1012
+ },
1013
+ {
1014
+ prefix: "--display-xs",
1015
+ entries: [
1016
+ { name: "--display-xs-font-family", value: "var(--display-font-family)" },
1017
+ { name: "--display-xs-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), -2) * 1rem)" },
1018
+ { name: "--display-xs-tablet-font-size", value: "min(var(--display-xs-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -2), var(--type-tablet-scale-compression)) * 1rem))" },
1019
+ { name: "--display-xs-phone-font-size", value: "min(var(--display-xs-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -2), var(--type-phone-scale-compression)) * 1rem))" },
1020
+ { name: "--display-xs-font-size", value: "var(--display-xs-desktop-font-size)" },
1021
+ { name: "--display-xs-font-weight", value: "var(--display-font-weight)" },
1022
+ { name: "--display-xs-line-height", value: "var(--line-height-tighter)" },
1023
+ { name: "--display-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
1024
+ ]
1025
+ },
1026
+ {
1027
+ prefix: "--display-2xs",
1028
+ entries: [
1029
+ { name: "--display-2xs-font-family", value: "var(--display-font-family)" },
1030
+ { name: "--display-2xs-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), -3) * 1rem)" },
1031
+ { name: "--display-2xs-tablet-font-size", value: "min(var(--display-2xs-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -3), var(--type-tablet-scale-compression)) * 1rem))" },
1032
+ { name: "--display-2xs-phone-font-size", value: "min(var(--display-2xs-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -3), var(--type-phone-scale-compression)) * 1rem))" },
1033
+ { name: "--display-2xs-font-size", value: "var(--display-2xs-desktop-font-size)" },
1034
+ { name: "--display-2xs-font-weight", value: "var(--display-font-weight)" },
1035
+ { name: "--display-2xs-line-height", value: "var(--line-height-tighter)" },
1036
+ { name: "--display-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
1037
+ ]
1038
+ }
1039
+ ]
1040
+ },
1041
+ {
1042
+ usage: "heading",
1043
+ comment: "Heading: the page outline, h1 at xl down to h6 at 2xs",
1044
+ follows: "display",
1045
+ settings: [
1046
+ { name: "--heading-font-family", value: "var(--font-display)" },
1047
+ { name: "--heading-font-weight", value: "var(--font-weight-semibold)" },
1048
+ { name: "--heading-scale-base", value: "1.5" },
1049
+ { name: "--heading-scale-ratio", value: "1.25" }
1050
+ ],
1051
+ steps: [
1052
+ {
1053
+ prefix: "--heading-2xl",
1054
+ entries: [
1055
+ { name: "--heading-2xl-font-family", value: "var(--heading-font-family)" },
1056
+ { name: "--heading-2xl-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 3) * 1rem)" },
1057
+ { name: "--heading-2xl-tablet-font-size", value: "min(var(--heading-2xl-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 3), var(--type-tablet-scale-compression)) * 1rem))" },
1058
+ { name: "--heading-2xl-phone-font-size", value: "min(var(--heading-2xl-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 3), var(--type-phone-scale-compression)) * 1rem))" },
1059
+ { name: "--heading-2xl-font-size", value: "var(--heading-2xl-desktop-font-size)" },
1060
+ { name: "--heading-2xl-font-weight", value: "var(--heading-font-weight)" },
1061
+ { name: "--heading-2xl-line-height", value: "var(--line-height-tightest)" },
1062
+ { name: "--heading-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
1063
+ ]
1064
+ },
1065
+ {
1066
+ prefix: "--heading-xl",
1067
+ entries: [
1068
+ { name: "--heading-xl-font-family", value: "var(--heading-font-family)" },
1069
+ { name: "--heading-xl-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 2) * 1rem)" },
1070
+ { name: "--heading-xl-tablet-font-size", value: "min(var(--heading-xl-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 2), var(--type-tablet-scale-compression)) * 1rem))" },
1071
+ { name: "--heading-xl-phone-font-size", value: "min(var(--heading-xl-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 2), var(--type-phone-scale-compression)) * 1rem))" },
1072
+ { name: "--heading-xl-font-size", value: "var(--heading-xl-desktop-font-size)" },
1073
+ { name: "--heading-xl-font-weight", value: "var(--heading-font-weight)" },
1074
+ { name: "--heading-xl-line-height", value: "var(--line-height-tightest)" },
1075
+ { name: "--heading-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
1076
+ ]
1077
+ },
1078
+ {
1079
+ prefix: "--heading-lg",
1080
+ entries: [
1081
+ { name: "--heading-lg-font-family", value: "var(--heading-font-family)" },
1082
+ { name: "--heading-lg-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 1) * 1rem)" },
1083
+ { name: "--heading-lg-tablet-font-size", value: "min(var(--heading-lg-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 1), var(--type-tablet-scale-compression)) * 1rem))" },
1084
+ { name: "--heading-lg-phone-font-size", value: "min(var(--heading-lg-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 1), var(--type-phone-scale-compression)) * 1rem))" },
1085
+ { name: "--heading-lg-font-size", value: "var(--heading-lg-desktop-font-size)" },
1086
+ { name: "--heading-lg-font-weight", value: "var(--heading-font-weight)" },
1087
+ { name: "--heading-lg-line-height", value: "var(--line-height-tightest)" },
1088
+ { name: "--heading-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
1089
+ ]
1090
+ },
1091
+ {
1092
+ prefix: "--heading-md",
1093
+ entries: [
1094
+ { name: "--heading-md-font-family", value: "var(--heading-font-family)" },
1095
+ { name: "--heading-md-desktop-font-size", value: "calc(var(--heading-scale-base) * 1rem)" },
1096
+ { name: "--heading-md-tablet-font-size", value: "min(var(--heading-md-desktop-font-size), calc(pow(var(--heading-scale-base), var(--type-tablet-scale-compression)) * 1rem))" },
1097
+ { name: "--heading-md-phone-font-size", value: "min(var(--heading-md-desktop-font-size), calc(pow(var(--heading-scale-base), var(--type-phone-scale-compression)) * 1rem))" },
1098
+ { name: "--heading-md-font-size", value: "var(--heading-md-desktop-font-size)" },
1099
+ { name: "--heading-md-font-weight", value: "var(--heading-font-weight)" },
1100
+ { name: "--heading-md-line-height", value: "var(--line-height-tighter)" },
1101
+ { name: "--heading-md-letter-spacing", value: "var(--letter-spacing-normal)" }
1102
+ ]
1103
+ },
1104
+ {
1105
+ prefix: "--heading-sm",
1106
+ entries: [
1107
+ { name: "--heading-sm-font-family", value: "var(--font-sans)" },
1108
+ { name: "--heading-sm-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -1) * 1rem)" },
1109
+ { name: "--heading-sm-tablet-font-size", value: "min(var(--heading-sm-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -1), var(--type-tablet-scale-compression)) * 1rem))" },
1110
+ { name: "--heading-sm-phone-font-size", value: "min(var(--heading-sm-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -1), var(--type-phone-scale-compression)) * 1rem))" },
1111
+ { name: "--heading-sm-font-size", value: "var(--heading-sm-desktop-font-size)" },
1112
+ { name: "--heading-sm-font-weight", value: "var(--heading-font-weight)" },
1113
+ { name: "--heading-sm-line-height", value: "var(--line-height-tighter)" },
1114
+ { name: "--heading-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
1115
+ ]
1116
+ },
1117
+ {
1118
+ prefix: "--heading-xs",
1119
+ entries: [
1120
+ { name: "--heading-xs-font-family", value: "var(--font-sans)" },
1121
+ { name: "--heading-xs-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -2) * 1rem)" },
1122
+ { name: "--heading-xs-tablet-font-size", value: "min(var(--heading-xs-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -2), var(--type-tablet-scale-compression)) * 1rem))" },
1123
+ { name: "--heading-xs-phone-font-size", value: "min(var(--heading-xs-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -2), var(--type-phone-scale-compression)) * 1rem))" },
1124
+ { name: "--heading-xs-font-size", value: "var(--heading-xs-desktop-font-size)" },
1125
+ { name: "--heading-xs-font-weight", value: "var(--heading-font-weight)" },
1126
+ { name: "--heading-xs-line-height", value: "var(--line-height-tight)" },
1127
+ { name: "--heading-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
1128
+ ]
1129
+ },
1130
+ {
1131
+ prefix: "--heading-2xs",
1132
+ entries: [
1133
+ { name: "--heading-2xs-font-family", value: "var(--font-sans)" },
1134
+ { name: "--heading-2xs-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -3) * 1rem)" },
1135
+ { name: "--heading-2xs-tablet-font-size", value: "min(var(--heading-2xs-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -3), var(--type-tablet-scale-compression)) * 1rem))" },
1136
+ { name: "--heading-2xs-phone-font-size", value: "min(var(--heading-2xs-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -3), var(--type-phone-scale-compression)) * 1rem))" },
1137
+ { name: "--heading-2xs-font-size", value: "var(--heading-2xs-desktop-font-size)" },
1138
+ { name: "--heading-2xs-font-weight", value: "var(--heading-font-weight)" },
1139
+ { name: "--heading-2xs-line-height", value: "var(--line-height-tight)" },
1140
+ { name: "--heading-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
1141
+ ]
1142
+ }
1143
+ ]
1144
+ },
1145
+ {
1146
+ usage: "body",
1147
+ comment: "Body: interface text and short copy",
1148
+ follows: "heading",
1149
+ settings: [
1150
+ { name: "--body-font-family", value: "var(--font-sans)" },
1151
+ { name: "--body-font-weight", value: "var(--font-weight-normal)" },
1152
+ { name: "--body-scale-base", value: "1" },
1153
+ { name: "--body-scale-ratio", value: "1.125" }
1154
+ ],
1155
+ steps: [
1156
+ {
1157
+ prefix: "--body-2xl",
1158
+ entries: [
1159
+ { name: "--body-2xl-font-family", value: "var(--body-font-family)" },
1160
+ { name: "--body-2xl-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), 3) * 1rem)" },
1161
+ { name: "--body-2xl-tablet-font-size", value: "min(var(--body-2xl-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 3), var(--type-tablet-scale-compression)) * 1rem))" },
1162
+ { name: "--body-2xl-phone-font-size", value: "min(var(--body-2xl-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 3), var(--type-phone-scale-compression)) * 1rem))" },
1163
+ { name: "--body-2xl-font-size", value: "var(--body-2xl-desktop-font-size)" },
1164
+ { name: "--body-2xl-font-weight", value: "var(--body-font-weight)" },
1165
+ { name: "--body-2xl-line-height", value: "var(--line-height-tighter)" },
1166
+ { name: "--body-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
1167
+ ]
1168
+ },
1169
+ {
1170
+ prefix: "--body-xl",
1171
+ entries: [
1172
+ { name: "--body-xl-font-family", value: "var(--body-font-family)" },
1173
+ { name: "--body-xl-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), 2) * 1rem)" },
1174
+ { name: "--body-xl-tablet-font-size", value: "min(var(--body-xl-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 2), var(--type-tablet-scale-compression)) * 1rem))" },
1175
+ { name: "--body-xl-phone-font-size", value: "min(var(--body-xl-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 2), var(--type-phone-scale-compression)) * 1rem))" },
1176
+ { name: "--body-xl-font-size", value: "var(--body-xl-desktop-font-size)" },
1177
+ { name: "--body-xl-font-weight", value: "var(--body-font-weight)" },
1178
+ { name: "--body-xl-line-height", value: "var(--line-height-tighter)" },
1179
+ { name: "--body-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
1180
+ ]
1181
+ },
1182
+ {
1183
+ prefix: "--body-lg",
1184
+ entries: [
1185
+ { name: "--body-lg-font-family", value: "var(--body-font-family)" },
1186
+ { name: "--body-lg-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), 1) * 1rem)" },
1187
+ { name: "--body-lg-tablet-font-size", value: "min(var(--body-lg-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 1), var(--type-tablet-scale-compression)) * 1rem))" },
1188
+ { name: "--body-lg-phone-font-size", value: "min(var(--body-lg-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 1), var(--type-phone-scale-compression)) * 1rem))" },
1189
+ { name: "--body-lg-font-size", value: "var(--body-lg-desktop-font-size)" },
1190
+ { name: "--body-lg-font-weight", value: "var(--body-font-weight)" },
1191
+ { name: "--body-lg-line-height", value: "var(--line-height-tight)" },
1192
+ { name: "--body-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
1193
+ ]
1194
+ },
1195
+ {
1196
+ prefix: "--body-md",
1197
+ entries: [
1198
+ { name: "--body-md-font-family", value: "var(--body-font-family)" },
1199
+ { name: "--body-md-desktop-font-size", value: "calc(var(--body-scale-base) * 1rem)" },
1200
+ { name: "--body-md-tablet-font-size", value: "min(var(--body-md-desktop-font-size), calc(pow(var(--body-scale-base), var(--type-tablet-scale-compression)) * 1rem))" },
1201
+ { name: "--body-md-phone-font-size", value: "min(var(--body-md-desktop-font-size), calc(pow(var(--body-scale-base), var(--type-phone-scale-compression)) * 1rem))" },
1202
+ { name: "--body-md-font-size", value: "var(--body-md-desktop-font-size)" },
1203
+ { name: "--body-md-font-weight", value: "var(--body-font-weight)" },
1204
+ { name: "--body-md-line-height", value: "var(--line-height-normal)" },
1205
+ { name: "--body-md-letter-spacing", value: "var(--letter-spacing-normal)" }
1206
+ ]
1207
+ },
1208
+ {
1209
+ prefix: "--body-sm",
1210
+ entries: [
1211
+ { name: "--body-sm-font-family", value: "var(--body-font-family)" },
1212
+ { name: "--body-sm-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), -1) * 1rem)" },
1213
+ { name: "--body-sm-tablet-font-size", value: "min(var(--body-sm-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -1), var(--type-tablet-scale-compression)) * 1rem))" },
1214
+ { name: "--body-sm-phone-font-size", value: "min(var(--body-sm-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -1), var(--type-phone-scale-compression)) * 1rem))" },
1215
+ { name: "--body-sm-font-size", value: "var(--body-sm-desktop-font-size)" },
1216
+ { name: "--body-sm-font-weight", value: "var(--body-font-weight)" },
1217
+ { name: "--body-sm-line-height", value: "var(--line-height-tight)" },
1218
+ { name: "--body-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
1219
+ ]
1220
+ },
1221
+ {
1222
+ prefix: "--body-xs",
1223
+ entries: [
1224
+ { name: "--body-xs-font-family", value: "var(--body-font-family)" },
1225
+ { name: "--body-xs-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), -2) * 1rem)" },
1226
+ { name: "--body-xs-tablet-font-size", value: "min(var(--body-xs-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -2), var(--type-tablet-scale-compression)) * 1rem))" },
1227
+ { name: "--body-xs-phone-font-size", value: "min(var(--body-xs-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -2), var(--type-phone-scale-compression)) * 1rem))" },
1228
+ { name: "--body-xs-font-size", value: "var(--body-xs-desktop-font-size)" },
1229
+ { name: "--body-xs-font-weight", value: "var(--body-font-weight)" },
1230
+ { name: "--body-xs-line-height", value: "var(--line-height-tight)" },
1231
+ { name: "--body-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
1232
+ ]
1233
+ },
1234
+ {
1235
+ prefix: "--body-2xs",
1236
+ entries: [
1237
+ { name: "--body-2xs-font-family", value: "var(--body-font-family)" },
1238
+ { name: "--body-2xs-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), -3) * 1rem)" },
1239
+ { name: "--body-2xs-tablet-font-size", value: "min(var(--body-2xs-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -3), var(--type-tablet-scale-compression)) * 1rem))" },
1240
+ { name: "--body-2xs-phone-font-size", value: "min(var(--body-2xs-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -3), var(--type-phone-scale-compression)) * 1rem))" },
1241
+ { name: "--body-2xs-font-size", value: "var(--body-2xs-desktop-font-size)" },
1242
+ { name: "--body-2xs-font-weight", value: "var(--body-font-weight)" },
1243
+ { name: "--body-2xs-line-height", value: "var(--line-height-tight)" },
1244
+ { name: "--body-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
1245
+ ]
1246
+ }
1247
+ ]
1248
+ },
1249
+ {
1250
+ usage: "code",
1251
+ comment: "Code: code blocks and inline code",
1252
+ follows: "body",
1253
+ settings: [
1254
+ { name: "--code-font-family", value: "var(--font-mono)" },
1255
+ { name: "--code-font-weight", value: "var(--font-weight-normal)" },
1256
+ { name: "--code-scale-base", value: "0.875" },
1257
+ { name: "--code-scale-ratio", value: "1.125" }
1258
+ ],
1259
+ steps: [
1260
+ {
1261
+ prefix: "--code-2xl",
1262
+ entries: [
1263
+ { name: "--code-2xl-font-family", value: "var(--code-font-family)" },
1264
+ { name: "--code-2xl-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), 3) * 1rem)" },
1265
+ { name: "--code-2xl-tablet-font-size", value: "min(var(--code-2xl-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 3), var(--type-tablet-scale-compression)) * 1rem))" },
1266
+ { name: "--code-2xl-phone-font-size", value: "min(var(--code-2xl-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 3), var(--type-phone-scale-compression)) * 1rem))" },
1267
+ { name: "--code-2xl-font-size", value: "var(--code-2xl-desktop-font-size)" },
1268
+ { name: "--code-2xl-font-weight", value: "var(--code-font-weight)" },
1269
+ { name: "--code-2xl-line-height", value: "var(--line-height-normal)" },
1270
+ { name: "--code-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
1271
+ ]
1272
+ },
1273
+ {
1274
+ prefix: "--code-xl",
1275
+ entries: [
1276
+ { name: "--code-xl-font-family", value: "var(--code-font-family)" },
1277
+ { name: "--code-xl-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), 2) * 1rem)" },
1278
+ { name: "--code-xl-tablet-font-size", value: "min(var(--code-xl-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 2), var(--type-tablet-scale-compression)) * 1rem))" },
1279
+ { name: "--code-xl-phone-font-size", value: "min(var(--code-xl-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 2), var(--type-phone-scale-compression)) * 1rem))" },
1280
+ { name: "--code-xl-font-size", value: "var(--code-xl-desktop-font-size)" },
1281
+ { name: "--code-xl-font-weight", value: "var(--code-font-weight)" },
1282
+ { name: "--code-xl-line-height", value: "var(--line-height-normal)" },
1283
+ { name: "--code-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
1284
+ ]
1285
+ },
1286
+ {
1287
+ prefix: "--code-lg",
1288
+ entries: [
1289
+ { name: "--code-lg-font-family", value: "var(--code-font-family)" },
1290
+ { name: "--code-lg-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), 1) * 1rem)" },
1291
+ { name: "--code-lg-tablet-font-size", value: "min(var(--code-lg-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 1), var(--type-tablet-scale-compression)) * 1rem))" },
1292
+ { name: "--code-lg-phone-font-size", value: "min(var(--code-lg-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 1), var(--type-phone-scale-compression)) * 1rem))" },
1293
+ { name: "--code-lg-font-size", value: "var(--code-lg-desktop-font-size)" },
1294
+ { name: "--code-lg-font-weight", value: "var(--code-font-weight)" },
1295
+ { name: "--code-lg-line-height", value: "var(--line-height-normal)" },
1296
+ { name: "--code-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
1297
+ ]
1298
+ },
1299
+ {
1300
+ prefix: "--code-md",
1301
+ entries: [
1302
+ { name: "--code-md-font-family", value: "var(--code-font-family)" },
1303
+ { name: "--code-md-desktop-font-size", value: "calc(var(--code-scale-base) * 1rem)" },
1304
+ { name: "--code-md-tablet-font-size", value: "min(var(--code-md-desktop-font-size), calc(pow(var(--code-scale-base), var(--type-tablet-scale-compression)) * 1rem))" },
1305
+ { name: "--code-md-phone-font-size", value: "min(var(--code-md-desktop-font-size), calc(pow(var(--code-scale-base), var(--type-phone-scale-compression)) * 1rem))" },
1306
+ { name: "--code-md-font-size", value: "var(--code-md-desktop-font-size)" },
1307
+ { name: "--code-md-font-weight", value: "var(--code-font-weight)" },
1308
+ { name: "--code-md-line-height", value: "var(--line-height-normal)" },
1309
+ { name: "--code-md-letter-spacing", value: "var(--letter-spacing-normal)" }
1310
+ ]
1311
+ },
1312
+ {
1313
+ prefix: "--code-sm",
1314
+ entries: [
1315
+ { name: "--code-sm-font-family", value: "var(--code-font-family)" },
1316
+ { name: "--code-sm-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), -1) * 1rem)" },
1317
+ { name: "--code-sm-tablet-font-size", value: "min(var(--code-sm-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -1), var(--type-tablet-scale-compression)) * 1rem))" },
1318
+ { name: "--code-sm-phone-font-size", value: "min(var(--code-sm-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -1), var(--type-phone-scale-compression)) * 1rem))" },
1319
+ { name: "--code-sm-font-size", value: "var(--code-sm-desktop-font-size)" },
1320
+ { name: "--code-sm-font-weight", value: "var(--code-font-weight)" },
1321
+ { name: "--code-sm-line-height", value: "var(--line-height-normal)" },
1322
+ { name: "--code-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
1323
+ ]
1324
+ },
1325
+ {
1326
+ prefix: "--code-xs",
1327
+ entries: [
1328
+ { name: "--code-xs-font-family", value: "var(--code-font-family)" },
1329
+ { name: "--code-xs-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), -2) * 1rem)" },
1330
+ { name: "--code-xs-tablet-font-size", value: "min(var(--code-xs-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -2), var(--type-tablet-scale-compression)) * 1rem))" },
1331
+ { name: "--code-xs-phone-font-size", value: "min(var(--code-xs-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -2), var(--type-phone-scale-compression)) * 1rem))" },
1332
+ { name: "--code-xs-font-size", value: "var(--code-xs-desktop-font-size)" },
1333
+ { name: "--code-xs-font-weight", value: "var(--code-font-weight)" },
1334
+ { name: "--code-xs-line-height", value: "var(--line-height-normal)" },
1335
+ { name: "--code-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
1336
+ ]
1337
+ },
1338
+ {
1339
+ prefix: "--code-2xs",
1340
+ entries: [
1341
+ { name: "--code-2xs-font-family", value: "var(--code-font-family)" },
1342
+ { name: "--code-2xs-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), -3) * 1rem)" },
1343
+ { name: "--code-2xs-tablet-font-size", value: "min(var(--code-2xs-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -3), var(--type-tablet-scale-compression)) * 1rem))" },
1344
+ { name: "--code-2xs-phone-font-size", value: "min(var(--code-2xs-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -3), var(--type-phone-scale-compression)) * 1rem))" },
1345
+ { name: "--code-2xs-font-size", value: "var(--code-2xs-desktop-font-size)" },
1346
+ { name: "--code-2xs-font-weight", value: "var(--code-font-weight)" },
1347
+ { name: "--code-2xs-line-height", value: "var(--line-height-normal)" },
1348
+ { name: "--code-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
1349
+ ]
1350
+ }
1351
+ ]
1352
+ },
1353
+ {
1354
+ usage: "editorial",
1355
+ comment: "Editorial: the long-reading role",
1356
+ follows: "code",
1357
+ settings: [
1358
+ { name: "--editorial-font-family", value: "var(--font-editorial)" },
1359
+ { name: "--editorial-font-weight", value: "var(--font-weight-normal)" },
1360
+ { name: "--editorial-scale-base", value: "1" },
1361
+ { name: "--editorial-scale-ratio", value: "1.125" }
1362
+ ],
1363
+ steps: [
1364
+ {
1365
+ prefix: "--editorial-2xl",
1366
+ entries: [
1367
+ { name: "--editorial-2xl-font-family", value: "var(--editorial-font-family)" },
1368
+ { name: "--editorial-2xl-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 3) * 1rem)" },
1369
+ { name: "--editorial-2xl-tablet-font-size", value: "min(var(--editorial-2xl-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 3), var(--type-tablet-scale-compression)) * 1rem))" },
1370
+ { name: "--editorial-2xl-phone-font-size", value: "min(var(--editorial-2xl-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 3), var(--type-phone-scale-compression)) * 1rem))" },
1371
+ { name: "--editorial-2xl-font-size", value: "var(--editorial-2xl-desktop-font-size)" },
1372
+ { name: "--editorial-2xl-font-weight", value: "var(--editorial-font-weight)" },
1373
+ { name: "--editorial-2xl-line-height", value: "var(--line-height-tightest)" },
1374
+ { name: "--editorial-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
1375
+ ]
1376
+ },
1377
+ {
1378
+ prefix: "--editorial-xl",
1379
+ entries: [
1380
+ { name: "--editorial-xl-font-family", value: "var(--editorial-font-family)" },
1381
+ { name: "--editorial-xl-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 2) * 1rem)" },
1382
+ { name: "--editorial-xl-tablet-font-size", value: "min(var(--editorial-xl-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 2), var(--type-tablet-scale-compression)) * 1rem))" },
1383
+ { name: "--editorial-xl-phone-font-size", value: "min(var(--editorial-xl-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 2), var(--type-phone-scale-compression)) * 1rem))" },
1384
+ { name: "--editorial-xl-font-size", value: "var(--editorial-xl-desktop-font-size)" },
1385
+ { name: "--editorial-xl-font-weight", value: "var(--editorial-font-weight)" },
1386
+ { name: "--editorial-xl-line-height", value: "var(--line-height-tighter)" },
1387
+ { name: "--editorial-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
1388
+ ]
1389
+ },
1390
+ {
1391
+ prefix: "--editorial-lg",
1392
+ entries: [
1393
+ { name: "--editorial-lg-font-family", value: "var(--editorial-font-family)" },
1394
+ { name: "--editorial-lg-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 1) * 1rem)" },
1395
+ { name: "--editorial-lg-tablet-font-size", value: "min(var(--editorial-lg-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 1), var(--type-tablet-scale-compression)) * 1rem))" },
1396
+ { name: "--editorial-lg-phone-font-size", value: "min(var(--editorial-lg-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 1), var(--type-phone-scale-compression)) * 1rem))" },
1397
+ { name: "--editorial-lg-font-size", value: "var(--editorial-lg-desktop-font-size)" },
1398
+ { name: "--editorial-lg-font-weight", value: "var(--editorial-font-weight)" },
1399
+ { name: "--editorial-lg-line-height", value: "var(--line-height-tight)" },
1400
+ { name: "--editorial-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
1401
+ ]
1402
+ },
1403
+ {
1404
+ prefix: "--editorial-md",
1405
+ entries: [
1406
+ { name: "--editorial-md-font-family", value: "var(--editorial-font-family)" },
1407
+ { name: "--editorial-md-desktop-font-size", value: "calc(var(--editorial-scale-base) * 1rem)" },
1408
+ { name: "--editorial-md-tablet-font-size", value: "min(var(--editorial-md-desktop-font-size), calc(pow(var(--editorial-scale-base), var(--type-tablet-scale-compression)) * 1rem))" },
1409
+ { name: "--editorial-md-phone-font-size", value: "min(var(--editorial-md-desktop-font-size), calc(pow(var(--editorial-scale-base), var(--type-phone-scale-compression)) * 1rem))" },
1410
+ { name: "--editorial-md-font-size", value: "var(--editorial-md-desktop-font-size)" },
1411
+ { name: "--editorial-md-font-weight", value: "var(--editorial-font-weight)" },
1412
+ { name: "--editorial-md-line-height", value: "var(--line-height-normal)" },
1413
+ { name: "--editorial-md-letter-spacing", value: "var(--letter-spacing-normal)" }
1414
+ ]
1415
+ },
1416
+ {
1417
+ prefix: "--editorial-sm",
1418
+ entries: [
1419
+ { name: "--editorial-sm-font-family", value: "var(--editorial-font-family)" },
1420
+ { name: "--editorial-sm-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -1) * 1rem)" },
1421
+ { name: "--editorial-sm-tablet-font-size", value: "min(var(--editorial-sm-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -1), var(--type-tablet-scale-compression)) * 1rem))" },
1422
+ { name: "--editorial-sm-phone-font-size", value: "min(var(--editorial-sm-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -1), var(--type-phone-scale-compression)) * 1rem))" },
1423
+ { name: "--editorial-sm-font-size", value: "var(--editorial-sm-desktop-font-size)" },
1424
+ { name: "--editorial-sm-font-weight", value: "var(--editorial-font-weight)" },
1425
+ { name: "--editorial-sm-line-height", value: "var(--line-height-tight)" },
1426
+ { name: "--editorial-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
1427
+ ]
1428
+ },
1429
+ {
1430
+ prefix: "--editorial-xs",
1431
+ entries: [
1432
+ { name: "--editorial-xs-font-family", value: "var(--editorial-font-family)" },
1433
+ { name: "--editorial-xs-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -2) * 1rem)" },
1434
+ { name: "--editorial-xs-tablet-font-size", value: "min(var(--editorial-xs-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -2), var(--type-tablet-scale-compression)) * 1rem))" },
1435
+ { name: "--editorial-xs-phone-font-size", value: "min(var(--editorial-xs-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -2), var(--type-phone-scale-compression)) * 1rem))" },
1436
+ { name: "--editorial-xs-font-size", value: "var(--editorial-xs-desktop-font-size)" },
1437
+ { name: "--editorial-xs-font-weight", value: "var(--editorial-font-weight)" },
1438
+ { name: "--editorial-xs-line-height", value: "var(--line-height-tighter)" },
1439
+ { name: "--editorial-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
1440
+ ]
1441
+ },
1442
+ {
1443
+ prefix: "--editorial-2xs",
1444
+ entries: [
1445
+ { name: "--editorial-2xs-font-family", value: "var(--editorial-font-family)" },
1446
+ { name: "--editorial-2xs-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -3) * 1rem)" },
1447
+ { name: "--editorial-2xs-tablet-font-size", value: "min(var(--editorial-2xs-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -3), var(--type-tablet-scale-compression)) * 1rem))" },
1448
+ { name: "--editorial-2xs-phone-font-size", value: "min(var(--editorial-2xs-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -3), var(--type-phone-scale-compression)) * 1rem))" },
1449
+ { name: "--editorial-2xs-font-size", value: "var(--editorial-2xs-desktop-font-size)" },
1450
+ { name: "--editorial-2xs-font-weight", value: "var(--editorial-font-weight)" },
1451
+ { name: "--editorial-2xs-line-height", value: "var(--line-height-tighter)" },
1452
+ { name: "--editorial-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
1453
+ ]
1454
+ }
1455
+ ]
1456
+ }
1457
+ ];
1458
+ var EYEBROW = [
1459
+ { name: "--eyebrow-font-family", value: "var(--body-font-family)" },
1460
+ { name: "--eyebrow-desktop-font-size", value: "var(--body-sm-desktop-font-size)" },
1461
+ { name: "--eyebrow-tablet-font-size", value: "var(--body-sm-tablet-font-size)" },
1462
+ { name: "--eyebrow-phone-font-size", value: "var(--body-sm-phone-font-size)" },
1463
+ { name: "--eyebrow-font-size", value: "var(--eyebrow-desktop-font-size)" },
1464
+ { name: "--eyebrow-font-weight", value: "var(--body-font-weight)" },
1465
+ { name: "--eyebrow-line-height", value: "var(--line-height-normal)" },
1466
+ { name: "--eyebrow-letter-spacing", value: "var(--letter-spacing-normal)" },
1467
+ { name: "--eyebrow-text-transform", value: "none" }
1468
+ ];
1469
+ var MEDIA = [
1470
+ {
1471
+ query: "(max-width: 768px)",
1472
+ entries: [
1473
+ { name: "--display-2xl-font-size", value: "var(--display-2xl-tablet-font-size)" },
1474
+ { name: "--display-xl-font-size", value: "var(--display-xl-tablet-font-size)" },
1475
+ { name: "--display-lg-font-size", value: "var(--display-lg-tablet-font-size)" },
1476
+ { name: "--display-md-font-size", value: "var(--display-md-tablet-font-size)" },
1477
+ { name: "--display-sm-font-size", value: "var(--display-sm-tablet-font-size)" },
1478
+ { name: "--display-xs-font-size", value: "var(--display-xs-tablet-font-size)" },
1479
+ { name: "--display-2xs-font-size", value: "var(--display-2xs-tablet-font-size)" },
1480
+ { name: "--heading-2xl-font-size", value: "var(--heading-2xl-tablet-font-size)" },
1481
+ { name: "--heading-xl-font-size", value: "var(--heading-xl-tablet-font-size)" },
1482
+ { name: "--heading-lg-font-size", value: "var(--heading-lg-tablet-font-size)" },
1483
+ { name: "--heading-md-font-size", value: "var(--heading-md-tablet-font-size)" },
1484
+ { name: "--heading-sm-font-size", value: "var(--heading-sm-tablet-font-size)" },
1485
+ { name: "--heading-xs-font-size", value: "var(--heading-xs-tablet-font-size)" },
1486
+ { name: "--heading-2xs-font-size", value: "var(--heading-2xs-tablet-font-size)" },
1487
+ { name: "--body-2xl-font-size", value: "var(--body-2xl-tablet-font-size)" },
1488
+ { name: "--body-xl-font-size", value: "var(--body-xl-tablet-font-size)" },
1489
+ { name: "--body-lg-font-size", value: "var(--body-lg-tablet-font-size)" },
1490
+ { name: "--body-md-font-size", value: "var(--body-md-tablet-font-size)" },
1491
+ { name: "--body-sm-font-size", value: "var(--body-sm-tablet-font-size)" },
1492
+ { name: "--body-xs-font-size", value: "var(--body-xs-tablet-font-size)" },
1493
+ { name: "--body-2xs-font-size", value: "var(--body-2xs-tablet-font-size)" },
1494
+ { name: "--editorial-2xl-font-size", value: "var(--editorial-2xl-tablet-font-size)" },
1495
+ { name: "--editorial-xl-font-size", value: "var(--editorial-xl-tablet-font-size)" },
1496
+ { name: "--editorial-lg-font-size", value: "var(--editorial-lg-tablet-font-size)" },
1497
+ { name: "--editorial-md-font-size", value: "var(--editorial-md-tablet-font-size)" },
1498
+ { name: "--editorial-sm-font-size", value: "var(--editorial-sm-tablet-font-size)" },
1499
+ { name: "--editorial-xs-font-size", value: "var(--editorial-xs-tablet-font-size)" },
1500
+ { name: "--editorial-2xs-font-size", value: "var(--editorial-2xs-tablet-font-size)" },
1501
+ { name: "--code-2xl-font-size", value: "var(--code-2xl-tablet-font-size)" },
1502
+ { name: "--code-xl-font-size", value: "var(--code-xl-tablet-font-size)" },
1503
+ { name: "--code-lg-font-size", value: "var(--code-lg-tablet-font-size)" },
1504
+ { name: "--code-md-font-size", value: "var(--code-md-tablet-font-size)" },
1505
+ { name: "--code-sm-font-size", value: "var(--code-sm-tablet-font-size)" },
1506
+ { name: "--code-xs-font-size", value: "var(--code-xs-tablet-font-size)" },
1507
+ { name: "--code-2xs-font-size", value: "var(--code-2xs-tablet-font-size)" },
1508
+ { name: "--eyebrow-font-size", value: "var(--eyebrow-tablet-font-size)" }
1509
+ ]
1510
+ },
1511
+ {
1512
+ query: "(max-width: 480px)",
1513
+ entries: [
1514
+ { name: "--display-2xl-font-size", value: "var(--display-2xl-phone-font-size)" },
1515
+ { name: "--display-xl-font-size", value: "var(--display-xl-phone-font-size)" },
1516
+ { name: "--display-lg-font-size", value: "var(--display-lg-phone-font-size)" },
1517
+ { name: "--display-md-font-size", value: "var(--display-md-phone-font-size)" },
1518
+ { name: "--display-sm-font-size", value: "var(--display-sm-phone-font-size)" },
1519
+ { name: "--display-xs-font-size", value: "var(--display-xs-phone-font-size)" },
1520
+ { name: "--display-2xs-font-size", value: "var(--display-2xs-phone-font-size)" },
1521
+ { name: "--heading-2xl-font-size", value: "var(--heading-2xl-phone-font-size)" },
1522
+ { name: "--heading-xl-font-size", value: "var(--heading-xl-phone-font-size)" },
1523
+ { name: "--heading-lg-font-size", value: "var(--heading-lg-phone-font-size)" },
1524
+ { name: "--heading-md-font-size", value: "var(--heading-md-phone-font-size)" },
1525
+ { name: "--heading-sm-font-size", value: "var(--heading-sm-phone-font-size)" },
1526
+ { name: "--heading-xs-font-size", value: "var(--heading-xs-phone-font-size)" },
1527
+ { name: "--heading-2xs-font-size", value: "var(--heading-2xs-phone-font-size)" },
1528
+ { name: "--body-2xl-font-size", value: "var(--body-2xl-phone-font-size)" },
1529
+ { name: "--body-xl-font-size", value: "var(--body-xl-phone-font-size)" },
1530
+ { name: "--body-lg-font-size", value: "var(--body-lg-phone-font-size)" },
1531
+ { name: "--body-md-font-size", value: "var(--body-md-phone-font-size)" },
1532
+ { name: "--body-sm-font-size", value: "var(--body-sm-phone-font-size)" },
1533
+ { name: "--body-xs-font-size", value: "var(--body-xs-phone-font-size)" },
1534
+ { name: "--body-2xs-font-size", value: "var(--body-2xs-phone-font-size)" },
1535
+ { name: "--editorial-2xl-font-size", value: "var(--editorial-2xl-phone-font-size)" },
1536
+ { name: "--editorial-xl-font-size", value: "var(--editorial-xl-phone-font-size)" },
1537
+ { name: "--editorial-lg-font-size", value: "var(--editorial-lg-phone-font-size)" },
1538
+ { name: "--editorial-md-font-size", value: "var(--editorial-md-phone-font-size)" },
1539
+ { name: "--editorial-sm-font-size", value: "var(--editorial-sm-phone-font-size)" },
1540
+ { name: "--editorial-xs-font-size", value: "var(--editorial-xs-phone-font-size)" },
1541
+ { name: "--editorial-2xs-font-size", value: "var(--editorial-2xs-phone-font-size)" },
1542
+ { name: "--code-2xl-font-size", value: "var(--code-2xl-phone-font-size)" },
1543
+ { name: "--code-xl-font-size", value: "var(--code-xl-phone-font-size)" },
1544
+ { name: "--code-lg-font-size", value: "var(--code-lg-phone-font-size)" },
1545
+ { name: "--code-md-font-size", value: "var(--code-md-phone-font-size)" },
1546
+ { name: "--code-sm-font-size", value: "var(--code-sm-phone-font-size)" },
1547
+ { name: "--code-xs-font-size", value: "var(--code-xs-phone-font-size)" },
1548
+ { name: "--code-2xs-font-size", value: "var(--code-2xs-phone-font-size)" },
1549
+ { name: "--eyebrow-font-size", value: "var(--eyebrow-phone-font-size)" }
1550
+ ]
1551
+ }
1552
+ ];
1553
+ var DECLARED = new Map(
1554
+ USAGES.flatMap((u) => u.steps.flatMap((s) => s.entries)).concat(EYEBROW).map((e) => [e.name, e.value])
1555
+ );
1556
+ var TYPE_PRIMITIVES = ["--letter-spacing-", "--line-height-", "--font-weight-", "--font-size-", "--font-"];
1557
+ var CARRIED_PREFIXES = new Set(CARRIED.map((step) => step.prefix));
1558
+ function handDeclaredSteps(values) {
1559
+ return USAGES.flatMap((u) => u.steps).filter(
1560
+ ({ prefix }) => !CARRIED_PREFIXES.has(prefix) && values.has(`${prefix}-font-size`) && !values.has(`${prefix}-desktop-font-size`)
1561
+ ).map(({ prefix }) => ({ prefix, links: [] }));
1562
+ }
1563
+ var tokensCssMigration_2026_10_08_typeScales = {
1564
+ id: "2026-10-08-type-scales",
1565
+ kind: "breaking",
1566
+ description: "Rebuild the text styles as five type scales with per-viewport sizes, and rename --code-font-size, --code-line-height and --code-letter-spacing to --code-md-*",
1567
+ apply(css) {
1568
+ let out = css;
1569
+ for (const [from, to] of RENAMES3) out = renameToken(out, from, to);
1570
+ const values = collectTokenValues(out);
1571
+ for (const step of [...CARRIED, ...handDeclaredSteps(values)]) {
1572
+ const size = values.get(`${step.prefix}-font-size`);
1573
+ if (size === void 0) continue;
1574
+ const desktop = `${step.prefix}-desktop-font-size`;
1575
+ const edited = size !== step.size;
1576
+ const rem = edited ? resolvedRem(size, values) : null;
1577
+ out = ensureScale(out, {
1578
+ anchorPrefixes: [`${step.prefix}-font-family`, `${step.prefix}-`],
1579
+ entries: [
1580
+ { name: desktop, value: edited ? size : DECLARED.get(desktop) },
1581
+ ...rem === null ? [] : editedSizes(step.prefix, rem)
1582
+ ]
1583
+ });
1584
+ out = setTokenValue(out, `${step.prefix}-font-size`, `var(${desktop})`);
1585
+ for (const link of step.links) out = setTokenValue(out, link.name, link.to, { from: link.from });
1586
+ }
1587
+ out = ensureScale(out, {
1588
+ sectionComment: "Text styles: the compression that sets each tablet and phone size",
1589
+ anchorPrefixes: ["--type-", ...TYPE_PRIMITIVES],
1590
+ entries: COMPRESSION
1591
+ });
1592
+ for (const block of USAGES) {
1593
+ const fallback = [`--${block.usage}-scale-`, `--${block.follows}-`, "--type-"];
1594
+ out = ensureScale(out, { sectionComment: block.comment, anchorPrefixes: fallback, entries: block.settings });
1595
+ block.steps.forEach((step, i) => {
1596
+ const above = block.steps.slice(0, i).reverse().map((s) => `${s.prefix}-`);
1597
+ out = ensureScale(out, {
1598
+ anchorPrefixes: [
1599
+ `${step.prefix}-desktop-font-size`,
1600
+ `${step.prefix}-font-family`,
1601
+ `${step.prefix}-`,
1602
+ ...above,
1603
+ ...fallback
1604
+ ],
1605
+ entries: step.entries
1606
+ });
1607
+ });
1608
+ }
1609
+ out = ensureScale(out, {
1610
+ anchorPrefixes: ["--eyebrow-desktop-font-size", "--eyebrow-font-family", "--eyebrow-", "--editorial-"],
1611
+ entries: EYEBROW
1612
+ });
1613
+ for (const media of MEDIA) out = appendMediaBlock(out, media.query, media.entries);
1614
+ return out;
1615
+ }
1616
+ };
1617
+
682
1618
  // vite-plugin/files/dataPaths.ts
683
1619
  var import_fs = __toESM(require("fs"), 1);
684
1620
  var import_path = __toESM(require("path"), 1);
@@ -733,7 +1669,8 @@ var TOKENS_CSS_MIGRATIONS = [
733
1669
  tokensCssMigration_2026_09_01_scrimRename,
734
1670
  tokensCssMigration_2026_09_01_tintScale,
735
1671
  tokensCssMigration_2026_09_20_scrimColorAndOpacity,
736
- tokensCssMigration_2026_09_21_tintColorAndOpacity
1672
+ tokensCssMigration_2026_09_21_tintColorAndOpacity,
1673
+ tokensCssMigration_2026_10_08_typeScales
737
1674
  ];
738
1675
  function runTokensCssMigrations(css) {
739
1676
  return foldMigrations(css, () => true);
@@ -821,6 +1758,7 @@ function validateTokensCss(input) {
821
1758
  // Annotate the CommonJS export names for ESM import in node:
822
1759
  0 && (module.exports = {
823
1760
  TOKENS_CSS_MIGRATIONS,
1761
+ appendMediaBlock,
824
1762
  collectDefinedTokens,
825
1763
  collectReferencedTokens,
826
1764
  collectTokenValues,
@@ -834,5 +1772,6 @@ function validateTokensCss(input) {
834
1772
  runAdditiveTokensCssMigrations,
835
1773
  runTokensCssMigrations,
836
1774
  semverBumpType,
1775
+ setTokenValue,
837
1776
  validateTokensCss
838
1777
  });