@multiplatform.one/theme 8.2.2 → 8.4.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 (187) hide show
  1. package/dist/cjs/index.gnome.cjs +4 -1
  2. package/dist/cjs/index.gnome.native.js +3 -0
  3. package/dist/cjs/index.gnome.native.js.map +1 -1
  4. package/dist/cjs/menuRow.cjs +1 -1
  5. package/dist/cjs/menuRow.native.js +1 -1
  6. package/dist/cjs/theme/accentInk.cjs +6 -2
  7. package/dist/cjs/theme/accentInk.native.js +6 -2
  8. package/dist/cjs/theme/accentInk.native.js.map +1 -1
  9. package/dist/cjs/theme/chartPalette.cjs +3 -3
  10. package/dist/cjs/theme/chartPalette.native.js +5 -4
  11. package/dist/cjs/theme/chartPalette.native.js.map +1 -1
  12. package/dist/cjs/theme/colorRules.cjs +5 -0
  13. package/dist/cjs/theme/colorRules.native.js +6 -0
  14. package/dist/cjs/theme/colorRules.native.js.map +1 -1
  15. package/dist/cjs/theme/controlTiers.cjs +9 -5
  16. package/dist/cjs/theme/controlTiers.native.js +10 -5
  17. package/dist/cjs/theme/controlTiers.native.js.map +1 -1
  18. package/dist/cjs/theme/createThemes.cjs +212 -8
  19. package/dist/cjs/theme/createThemes.native.js +397 -12
  20. package/dist/cjs/theme/createThemes.native.js.map +1 -1
  21. package/dist/cjs/theme/defaults/builderOptions.cjs +9 -4
  22. package/dist/cjs/theme/defaults/builderOptions.native.js +9 -4
  23. package/dist/cjs/theme/defaults/builderOptions.native.js.map +1 -1
  24. package/dist/cjs/theme/fillContrast.cjs +4 -1
  25. package/dist/cjs/theme/fillContrast.native.js +4 -1
  26. package/dist/cjs/theme/fillContrast.native.js.map +1 -1
  27. package/dist/cjs/theme/index.cjs +1 -0
  28. package/dist/cjs/theme/index.native.js +1 -0
  29. package/dist/cjs/theme/index.native.js.map +1 -1
  30. package/dist/cjs/theme/nativeSchemePreference.cjs +2 -1
  31. package/dist/cjs/theme/nativeSchemePreference.native.js +2 -1
  32. package/dist/cjs/theme/nativeSchemePreference.native.js.map +1 -1
  33. package/dist/cjs/theme/nativeTheme.native.js.map +1 -1
  34. package/dist/cjs/theme/overlaySurfaces.cjs +2 -2
  35. package/dist/cjs/theme/overlaySurfaces.native.js +2 -2
  36. package/dist/cjs/theme/overlaySurfaces.native.js.map +1 -1
  37. package/dist/cjs/theme/readableColor.cjs +20 -9
  38. package/dist/cjs/theme/readableColor.native.js +20 -9
  39. package/dist/cjs/theme/readableColor.native.js.map +1 -1
  40. package/dist/cjs/theme/reducedMotion.cjs +49 -0
  41. package/dist/cjs/theme/reducedMotion.native.js +81 -0
  42. package/dist/cjs/theme/reducedMotion.native.js.map +1 -0
  43. package/dist/cjs/theme/resolveKnobs.cjs +4 -1
  44. package/dist/cjs/theme/resolveKnobs.native.js +4 -1
  45. package/dist/cjs/theme/resolveKnobs.native.js.map +1 -1
  46. package/dist/cjs/theme/tokenNumber.cjs +34 -0
  47. package/dist/cjs/theme/tokenNumber.native.js +39 -0
  48. package/dist/cjs/theme/tokenNumber.native.js.map +1 -0
  49. package/dist/cjs/theme/useResolvedKnobs.cjs +2 -22
  50. package/dist/cjs/theme/useResolvedKnobs.native.js +2 -30
  51. package/dist/cjs/theme/useResolvedKnobs.native.js.map +1 -1
  52. package/dist/esm/index.gnome.mjs +3 -2
  53. package/dist/esm/index.gnome.mjs.map +1 -1
  54. package/dist/esm/index.gnome.native.js +3 -2
  55. package/dist/esm/index.gnome.native.js.map +1 -1
  56. package/dist/esm/menuRow.mjs +1 -1
  57. package/dist/esm/menuRow.native.js +1 -1
  58. package/dist/esm/theme/accentInk.mjs +6 -3
  59. package/dist/esm/theme/accentInk.mjs.map +1 -1
  60. package/dist/esm/theme/accentInk.native.js +6 -3
  61. package/dist/esm/theme/accentInk.native.js.map +1 -1
  62. package/dist/esm/theme/chartPalette.mjs +3 -3
  63. package/dist/esm/theme/chartPalette.mjs.map +1 -1
  64. package/dist/esm/theme/chartPalette.native.js +5 -4
  65. package/dist/esm/theme/chartPalette.native.js.map +1 -1
  66. package/dist/esm/theme/colorRules.mjs +5 -1
  67. package/dist/esm/theme/colorRules.mjs.map +1 -1
  68. package/dist/esm/theme/colorRules.native.js +6 -1
  69. package/dist/esm/theme/colorRules.native.js.map +1 -1
  70. package/dist/esm/theme/controlTiers.mjs +9 -6
  71. package/dist/esm/theme/controlTiers.mjs.map +1 -1
  72. package/dist/esm/theme/controlTiers.native.js +10 -6
  73. package/dist/esm/theme/controlTiers.native.js.map +1 -1
  74. package/dist/esm/theme/createThemes.mjs +215 -12
  75. package/dist/esm/theme/createThemes.mjs.map +1 -1
  76. package/dist/esm/theme/createThemes.native.js +400 -16
  77. package/dist/esm/theme/createThemes.native.js.map +1 -1
  78. package/dist/esm/theme/defaults/builderOptions.mjs +10 -6
  79. package/dist/esm/theme/defaults/builderOptions.mjs.map +1 -1
  80. package/dist/esm/theme/defaults/builderOptions.native.js +10 -6
  81. package/dist/esm/theme/defaults/builderOptions.native.js.map +1 -1
  82. package/dist/esm/theme/fillContrast.mjs +5 -2
  83. package/dist/esm/theme/fillContrast.mjs.map +1 -1
  84. package/dist/esm/theme/fillContrast.native.js +5 -2
  85. package/dist/esm/theme/fillContrast.native.js.map +1 -1
  86. package/dist/esm/theme/index.mjs +1 -0
  87. package/dist/esm/theme/index.mjs.map +1 -1
  88. package/dist/esm/theme/index.native.js +1 -0
  89. package/dist/esm/theme/index.native.js.map +1 -1
  90. package/dist/esm/theme/nativeSchemePreference.mjs +2 -1
  91. package/dist/esm/theme/nativeSchemePreference.mjs.map +1 -1
  92. package/dist/esm/theme/nativeSchemePreference.native.js +2 -1
  93. package/dist/esm/theme/nativeSchemePreference.native.js.map +1 -1
  94. package/dist/esm/theme/nativeTheme.mjs.map +1 -1
  95. package/dist/esm/theme/nativeTheme.native.js.map +1 -1
  96. package/dist/esm/theme/overlaySurfaces.mjs +2 -2
  97. package/dist/esm/theme/overlaySurfaces.native.js +2 -2
  98. package/dist/esm/theme/readableColor.mjs +20 -9
  99. package/dist/esm/theme/readableColor.mjs.map +1 -1
  100. package/dist/esm/theme/readableColor.native.js +20 -9
  101. package/dist/esm/theme/readableColor.native.js.map +1 -1
  102. package/dist/esm/theme/reducedMotion.mjs +24 -0
  103. package/dist/esm/theme/reducedMotion.mjs.map +1 -0
  104. package/dist/esm/theme/reducedMotion.native.js +53 -0
  105. package/dist/esm/theme/reducedMotion.native.js.map +1 -0
  106. package/dist/esm/theme/resolveKnobs.mjs +4 -1
  107. package/dist/esm/theme/resolveKnobs.mjs.map +1 -1
  108. package/dist/esm/theme/resolveKnobs.native.js +4 -1
  109. package/dist/esm/theme/resolveKnobs.native.js.map +1 -1
  110. package/dist/esm/theme/tokenNumber.mjs +9 -0
  111. package/dist/esm/theme/tokenNumber.mjs.map +1 -0
  112. package/dist/esm/theme/tokenNumber.native.js +11 -0
  113. package/dist/esm/theme/tokenNumber.native.js.map +1 -0
  114. package/dist/esm/theme/useResolvedKnobs.mjs +2 -22
  115. package/dist/esm/theme/useResolvedKnobs.mjs.map +1 -1
  116. package/dist/esm/theme/useResolvedKnobs.native.js +2 -30
  117. package/dist/esm/theme/useResolvedKnobs.native.js.map +1 -1
  118. package/package.json +5 -5
  119. package/src/figma/figmaTokens.spec.ts +2 -1
  120. package/src/index.gnome.ts +2 -0
  121. package/src/menuRow.palette.spec.ts +20 -7
  122. package/src/menuRow.spec.ts +2 -2
  123. package/src/menuRow.ts +3 -3
  124. package/src/theme/accentInk.ts +8 -2
  125. package/src/theme/accentOnSurface.spec.tsx +6 -1
  126. package/src/theme/chartPalette.spec.ts +2 -2
  127. package/src/theme/chartPalette.ts +9 -9
  128. package/src/theme/colorRules.ts +13 -0
  129. package/src/theme/controlEdges.spec.ts +114 -0
  130. package/src/theme/controlTiers.ts +18 -9
  131. package/src/theme/createDefaultThemeConfig.spec.ts +135 -12
  132. package/src/theme/createThemes.ts +363 -24
  133. package/src/theme/defaults/builderOptions.ts +25 -8
  134. package/src/theme/defaults/secondaryInk.spec.ts +10 -5
  135. package/src/theme/fillContrast.spec.ts +8 -2
  136. package/src/theme/fillContrast.ts +10 -2
  137. package/src/theme/houseGround.spec.ts +1 -1
  138. package/src/theme/index.ts +1 -0
  139. package/src/theme/nativeSchemePreference.ts +2 -1
  140. package/src/theme/nativeTheme.tsx +1 -1
  141. package/src/theme/overlaySurfaces.tsx +2 -2
  142. package/src/theme/readableColor.ts +23 -11
  143. package/src/theme/recipes.ts +1 -0
  144. package/src/theme/reducedMotion.native.spec.ts +28 -0
  145. package/src/theme/reducedMotion.native.ts +36 -0
  146. package/src/theme/reducedMotion.ts +27 -0
  147. package/src/theme/resolveKnobs.spec.ts +4 -4
  148. package/src/theme/resolveKnobs.ts +6 -4
  149. package/src/theme/selectionFill.spec.ts +58 -0
  150. package/src/theme/sheetGrabber.spec.ts +4 -0
  151. package/src/theme/switchThumb.spec.ts +13 -1
  152. package/src/theme/themeKeyRegistry.spec.ts +26 -0
  153. package/src/theme/tokenNumber.spec.tsx +47 -0
  154. package/src/theme/tokenNumber.ts +18 -0
  155. package/src/theme/useResolvedKnobs.ts +2 -27
  156. package/types/index.gnome.d.ts +2 -1
  157. package/types/index.gnome.d.ts.map +1 -1
  158. package/types/menuRow.d.ts +5 -5
  159. package/types/theme/accentInk.d.ts +1 -0
  160. package/types/theme/accentInk.d.ts.map +1 -1
  161. package/types/theme/chartPalette.d.ts +2 -2
  162. package/types/theme/colorRules.d.ts +9 -0
  163. package/types/theme/colorRules.d.ts.map +1 -1
  164. package/types/theme/controlTiers.d.ts +11 -5
  165. package/types/theme/controlTiers.d.ts.map +1 -1
  166. package/types/theme/createThemes.d.ts +21 -12
  167. package/types/theme/createThemes.d.ts.map +1 -1
  168. package/types/theme/defaults/builderOptions.d.ts +9 -1
  169. package/types/theme/defaults/builderOptions.d.ts.map +1 -1
  170. package/types/theme/fillContrast.d.ts.map +1 -1
  171. package/types/theme/index.d.ts +1 -0
  172. package/types/theme/index.d.ts.map +1 -1
  173. package/types/theme/nativeSchemePreference.d.ts.map +1 -1
  174. package/types/theme/nativeTheme.d.ts +1 -1
  175. package/types/theme/nativeTheme.d.ts.map +1 -1
  176. package/types/theme/overlaySurfaces.d.ts +2 -2
  177. package/types/theme/readableColor.d.ts.map +1 -1
  178. package/types/theme/recipes.d.ts +3 -0
  179. package/types/theme/recipes.d.ts.map +1 -1
  180. package/types/theme/reducedMotion.d.ts +3 -0
  181. package/types/theme/reducedMotion.d.ts.map +1 -0
  182. package/types/theme/reducedMotion.native.d.ts +3 -0
  183. package/types/theme/reducedMotion.native.d.ts.map +1 -0
  184. package/types/theme/resolveKnobs.d.ts.map +1 -1
  185. package/types/theme/tokenNumber.d.ts +10 -0
  186. package/types/theme/tokenNumber.d.ts.map +1 -0
  187. package/types/theme/useResolvedKnobs.d.ts.map +1 -1
@@ -39,8 +39,8 @@ export const sheetGrabber = {
39
39
  width: 36,
40
40
  height: 5,
41
41
  borderRadius: 100,
42
- backgroundColor: "$color8",
43
- opacity: 0.45,
42
+ backgroundColor: "$color12",
43
+ opacity: 0.3,
44
44
  alignSelf: "center",
45
45
  marginHorizontal: 0,
46
46
  marginTop: 5,
@@ -120,9 +120,13 @@ function useIdentityInputs() {
120
120
  const keys = identityKeys(themeName);
121
121
  return {
122
122
  candidates: keys.map((key) => resolveTokenValue(theme, key)),
123
+ identityInk: resolveTokenValue(theme, "identityInk"),
123
124
  accentSteps: accentStepKeys.map((key) => resolveTokenValue(theme, key)),
124
125
  c1: resolveTokenValue(theme, "color1"),
125
126
  c2: resolveTokenValue(theme, "color2"),
127
+ // A dark overlay paints `$color5` (LC-85, FZ-8400), and accent ink in a
128
+ // Toast, menu or sheet sits on it.
129
+ c5: themeName.startsWith("dark") ? resolveTokenValue(theme, "color5") : undefined,
126
130
  ink: resolveTokenValue(theme, "color12") ?? "$color12",
127
131
  };
128
132
  }
@@ -138,14 +142,20 @@ function useIdentityInputs() {
138
142
  * none does.
139
143
  */
140
144
  export function useAccentOnSurface(): string {
141
- const { candidates, accentSteps, c1, c2, ink } = useIdentityInputs();
145
+ const { candidates, accentSteps, c1, c2, c5, ink } = useIdentityInputs();
142
146
  const theme = useTamaguiTheme() as unknown as Record<string, { val?: unknown } | undefined>;
143
147
  const candidateKey = candidates.join("|");
144
148
  const stepKey = accentSteps.join("|");
145
149
  const picked = useMemo(
146
- () => resolveAccentOnSurface({ identity: candidates, accentSteps, surfaces: [c1, c2], ink }),
150
+ () =>
151
+ resolveAccentOnSurface({
152
+ identity: candidates,
153
+ accentSteps,
154
+ surfaces: c5 ? [c1, c2, c5] : [c1, c2],
155
+ ink,
156
+ }),
147
157
  // eslint-disable-next-line react-hooks/exhaustive-deps
148
- [candidateKey, stepKey, c1, c2, ink],
158
+ [candidateKey, stepKey, c1, c2, c5, ink],
149
159
  );
150
160
  return isWeb && theme.accentOnSurface?.val === picked ? "$accentOnSurface" : picked;
151
161
  }
@@ -158,12 +168,13 @@ export function useAccentOnSurface(): string {
158
168
  * {@link useAccentOnSurface} does there.
159
169
  */
160
170
  export function useIdentityInkOnSurface(): string {
161
- const { candidates, c1, c2, ink } = useIdentityInputs();
162
- const candidateKey = candidates.join("|");
171
+ const { candidates, identityInk, c1, c2, c5, ink } = useIdentityInputs();
172
+ const identity = identityInk ? [identityInk] : candidates;
173
+ const candidateKey = identity.join("|");
163
174
  return useMemo(
164
- () => resolveIdentityInk({ candidates, surfaces: [c1, c2], ink }),
175
+ () => resolveIdentityInk({ candidates: identity, surfaces: c5 ? [c1, c2, c5] : [c1, c2], ink }),
165
176
  // eslint-disable-next-line react-hooks/exhaustive-deps
166
- [candidateKey, c1, c2, ink],
177
+ [candidateKey, c1, c2, c5, ink],
167
178
  );
168
179
  }
169
180
 
@@ -178,12 +189,13 @@ export function useIdentityHue(): {
178
189
  c2: string | undefined;
179
190
  ink: string;
180
191
  } {
181
- const { candidates, c1, c2, ink } = useIdentityInputs();
182
- const candidateKey = candidates.join("|");
192
+ const { candidates, identityInk, c1, c2, c5, ink } = useIdentityInputs();
193
+ const identity = identityInk ? [identityInk] : candidates;
194
+ const candidateKey = identity.join("|");
183
195
  const hue = useMemo(
184
- () => pickIdentityInk(candidates, [c1, c2]),
196
+ () => pickIdentityInk(identity, c5 ? [c1, c2, c5] : [c1, c2]),
185
197
  // eslint-disable-next-line react-hooks/exhaustive-deps
186
- [candidateKey, c1, c2],
198
+ [candidateKey, c1, c2, c5],
187
199
  );
188
200
  return { hue, c1, c2, ink };
189
201
  }
@@ -224,6 +224,7 @@ export interface KnobProps {
224
224
  */
225
225
  elevationChrome: ElevationChromeProps;
226
226
  thumbShadow: ElevationChromeProps;
227
+ trackRing: { boxShadow?: string };
227
228
  /** Resolved scheme the fragments were built for (LC-85). */
228
229
  scheme: "light" | "dark";
229
230
  surface: { backgroundColor: string; borderColor: string; borderWidth: number };
@@ -0,0 +1,28 @@
1
+ import { act, renderHook, waitFor } from "@testing-library/react";
2
+ import { describe, expect, it, vi } from "vitest";
3
+
4
+ const os = vi.hoisted(() => ({
5
+ enabled: true,
6
+ listener: null as ((value: boolean) => void) | null,
7
+ }));
8
+
9
+ vi.mock("react-native", () => ({
10
+ AccessibilityInfo: {
11
+ isReduceMotionEnabled: () => Promise.resolve(os.enabled),
12
+ addEventListener: (_name: string, listener: (value: boolean) => void) => {
13
+ os.listener = listener;
14
+ return { remove: () => {} };
15
+ },
16
+ },
17
+ }));
18
+
19
+ const { usePrefersReducedMotion } = await import("./reducedMotion.native");
20
+
21
+ describe("reduced motion on native (LC-68, FZ-8075)", () => {
22
+ it("reads iOS Reduce Motion and follows it when it changes", async () => {
23
+ const { result } = renderHook(() => usePrefersReducedMotion());
24
+ await waitFor(() => expect(result.current).toBe(true));
25
+ act(() => os.listener?.(false));
26
+ expect(result.current).toBe(false);
27
+ });
28
+ });
@@ -0,0 +1,36 @@
1
+ import { useSyncExternalStore } from "react";
2
+ import { AccessibilityInfo } from "react-native";
3
+
4
+ let reduced = false;
5
+ let primed = false;
6
+ const listeners = new Set<() => void>();
7
+
8
+ function set(value: boolean) {
9
+ if (value === reduced) return;
10
+ reduced = value;
11
+ for (const notify of listeners) notify();
12
+ }
13
+
14
+ function prime() {
15
+ if (primed) return;
16
+ primed = true;
17
+ AccessibilityInfo.isReduceMotionEnabled?.()
18
+ .then(set)
19
+ .catch(() => {});
20
+ AccessibilityInfo.addEventListener?.("reduceMotionChanged", set);
21
+ }
22
+
23
+ function subscribe(notify: () => void) {
24
+ prime();
25
+ listeners.add(notify);
26
+ return () => {
27
+ listeners.delete(notify);
28
+ };
29
+ }
30
+
31
+ const read = () => reduced;
32
+
33
+ /** iOS Reduce Motion and Android's remove-animations setting (LC-68 on native, FZ-8075). */
34
+ export function usePrefersReducedMotion(): boolean {
35
+ return useSyncExternalStore(subscribe, read, read);
36
+ }
@@ -0,0 +1,27 @@
1
+ import { useSyncExternalStore } from "react";
2
+
3
+ const reducedMotionQuery = "(prefers-reduced-motion: reduce)";
4
+ const serverReducedMotion = () => false;
5
+
6
+ function readReducedMotion(): boolean {
7
+ return typeof window !== "undefined" && !!window.matchMedia?.(reducedMotionQuery).matches;
8
+ }
9
+
10
+ function subscribeReducedMotion(notify: () => void) {
11
+ if (typeof window === "undefined" || !window.matchMedia) return () => {};
12
+ const mq = window.matchMedia(reducedMotionQuery);
13
+ if (typeof mq.addEventListener === "function") {
14
+ mq.addEventListener("change", notify);
15
+ return () => mq.removeEventListener("change", notify);
16
+ }
17
+ if (typeof mq.addListener === "function") {
18
+ mq.addListener(notify);
19
+ return () => mq.removeListener?.(notify);
20
+ }
21
+ return () => {};
22
+ }
23
+
24
+ /** Adopt the OS motion preference after matching the server's initial markup. */
25
+ export function usePrefersReducedMotion(): boolean {
26
+ return useSyncExternalStore(subscribeReducedMotion, readReducedMotion, serverReducedMotion);
27
+ }
@@ -310,7 +310,7 @@ describe("resolveKnobs", () => {
310
310
  expect(knobProps.elevation).toBe(key);
311
311
  expect(knobProps.cardSurface.backgroundColor).toBe("$background");
312
312
  expect(knobProps.elevatedSurface.backgroundColor).toBe(
313
- scheme === "dark" ? "$color4" : "$background",
313
+ scheme === "dark" ? "$color5" : "$background",
314
314
  );
315
315
  expect(knobProps.elevatedSurface.borderColor).toBe(
316
316
  scheme === "dark" ? "transparent" : "$borderColor",
@@ -341,9 +341,9 @@ describe("resolveKnobs", () => {
341
341
  { length: 12 },
342
342
  (_, index) => themes.dark[`color${index + 1}`].val,
343
343
  );
344
- expect(knobProps.elevatedSurface.backgroundColor).toBe("$color4");
344
+ expect(knobProps.elevatedSurface.backgroundColor).toBe("$color5");
345
345
  const cardIndex = palette.indexOf(themes.dark_Card.background.val);
346
- const overlayIndex = palette.indexOf(themes.dark.color4.val);
346
+ const overlayIndex = palette.indexOf(themes.dark.color5.val);
347
347
  expect(cardIndex).toBeGreaterThanOrEqual(0);
348
348
  expect(overlayIndex - cardIndex).toBe(1);
349
349
  });
@@ -459,7 +459,7 @@ describe("resolveKnobs", () => {
459
459
  const { offsetY, radius } = sizedElevation(getActiveScaleTokens().size[key]);
460
460
  expect(knobProps.overlayElevation).toBe(key);
461
461
  if (scheme === "dark") {
462
- expect(knobProps.elevatedSurface.backgroundColor).toBe("$color4");
462
+ expect(knobProps.elevatedSurface.backgroundColor).toBe("$color5");
463
463
  expect(knobProps.elevatedSurface.shadowColor).toBeUndefined();
464
464
  expect(knobProps.elevatedSurface.style?.boxShadow).toBeUndefined();
465
465
  return;
@@ -456,10 +456,11 @@ function elevationChromeFor(key: SizeKey | undefined): ElevationChromeProps {
456
456
  };
457
457
  }
458
458
 
459
- // v5's surface2 template step: the fill two palette steps above the base
460
- // `$background` (color2), one above Card's surface1. A dark overlay separates
461
- // by this lighter fill and its shadow, with no light edge (HIG, FZ-7944).
462
- const surface2 = { fill: "$color4" } as const;
459
+ // A dark overlay's fill is the house surface2 step (FZ-8400): the page is
460
+ // `$color1`, Card's surface1 `$color4`, and an overlay one step above that,
461
+ // so a menu still reads over the field or card it opens on. It separates by
462
+ // this lighter fill, with no light edge (HIG, FZ-7944).
463
+ const surface2 = { fill: "$color5" } as const;
463
464
 
464
465
  // `$textMuted` is the theme's secondary ink (LC-152): the most muted ramp
465
466
  // step that clears 7:1 on the page and every card tier in its own scheme. A
@@ -883,6 +884,7 @@ export function resolveKnobs(
883
884
  overlayElevation: platformElevation(overlayElevationToken),
884
885
  elevationChrome,
885
886
  thumbShadow: elevationChromeFor("$0.5"),
887
+ trackRing: isWeb ? { boxShadow: "inset 0 0 0 1px var(--switchTrackOffBorder)" } : {},
886
888
  scheme,
887
889
  surface: {
888
890
  backgroundColor: "$background",
@@ -0,0 +1,58 @@
1
+ /**
2
+ * LC-05, FZ-8400: `$selectFill` and `$selectPress` are the neutral selection
3
+ * tier's fills. A selection fill that resolves to nothing paints no selected
4
+ * row at all, so every theme Tamagui can resolve carries both, the page keeps
5
+ * its `$color4` / `$color5`, and a dark card's own pair steps above its fill.
6
+ */
7
+ import { configWithoutAnimations } from "@tamagui/config";
8
+ import { createTamagui } from "tamagui";
9
+ import { describe, expect, it } from "vitest";
10
+ import { contrastRatio, normalizeToHex, relativeLuminance } from "./colorRules";
11
+ import { createDefaultThemeConfig } from "./createDefaultThemeConfig";
12
+
13
+ const built = createDefaultThemeConfig({}).tamagui.themes as unknown as Record<
14
+ string,
15
+ Record<string, { val?: string } | string>
16
+ >;
17
+ const config = createTamagui({ ...configWithoutAnimations, themes: built as never });
18
+ const themes = config.themes as unknown as Record<string, Record<string, { val?: string }>>;
19
+ const value = (name: string, key: string) => themes[name]?.[key]?.val;
20
+ const lum = (raw: string) => relativeLuminance(normalizeToHex(raw)!);
21
+
22
+ describe("the LC-05 selection fills resolve in every theme (FZ-8400)", () => {
23
+ const names = Object.keys(themes);
24
+
25
+ it("covers the whole matrix", () => {
26
+ expect(names.length).toBeGreaterThan(400);
27
+ });
28
+
29
+ it("every theme carries $selectFill and $selectPress", () => {
30
+ const missing = names.filter(
31
+ (name) => !value(name, "selectFill") || !value(name, "selectPress"),
32
+ );
33
+ expect(missing).toEqual([]);
34
+ });
35
+
36
+ it("each scheme and hue page paints its own $color4 and $color5", () => {
37
+ for (const name of names.filter((n) => /^(light|dark)(_[a-z]+)?$/.test(n))) {
38
+ expect(value(name, "selectFill"), name).toBe(value(name, "color4"));
39
+ expect(value(name, "selectPress"), name).toBe(value(name, "color5"));
40
+ }
41
+ });
42
+
43
+ it("a dark card's selection steps above its own fill", () => {
44
+ // `_accent` and `_active` are inverse control fills, not grounds.
45
+ const cards = names.filter(
46
+ (n) => /^dark(_[a-z]+)?_Card$/.test(n) && !/_(accent|active)_Card$/.test(n),
47
+ );
48
+ expect(cards.length).toBeGreaterThan(5);
49
+ for (const name of cards) {
50
+ const card = value(name, "background")!;
51
+ const fill = value(name, "selectFill")!;
52
+ const press = value(name, "selectPress")!;
53
+ expect(lum(fill), `${name} selectFill over its card`).toBeGreaterThan(lum(card));
54
+ expect(contrastRatio(lum(fill), lum(card)), name).toBeGreaterThan(1.05);
55
+ expect(lum(press), `${name} selectPress over selectFill`).toBeGreaterThan(lum(fill));
56
+ }
57
+ });
58
+ });
@@ -6,6 +6,10 @@ describe("sheetGrabber (FZ-8648)", () => {
6
6
  expect(sheetGrabber).toMatchObject({ width: 36, height: 5, marginTop: 5, alignSelf: "center" });
7
7
  });
8
8
 
9
+ it("draws in the label ink at 30%, iOS's tertiary label, so it reads on a light and a dark sheet", () => {
10
+ expect(sheetGrabber).toMatchObject({ backgroundColor: "$color12", opacity: 0.3 });
11
+ });
12
+
9
13
  it("takes no height, so it lands the same above a frame and inside a grab zone", () => {
10
14
  expect(sheetGrabber.marginTop + sheetGrabber.height + sheetGrabber.marginBottom).toBe(0);
11
15
  });
@@ -8,6 +8,7 @@ import {
8
8
  normalizeToHex,
9
9
  plateContrastRatio,
10
10
  relativeLuminance,
11
+ switchOffGround,
11
12
  } from "./colorRules";
12
13
  import { createThemesBuilder } from "./createThemes";
13
14
  import { defaultAccentTheme } from "./defaults/accent";
@@ -54,7 +55,14 @@ describe("switch thumb", () => {
54
55
  const scheme = name.split("_")[0] as "light" | "dark";
55
56
  const off = theme.switchTrackOff.val;
56
57
  expect(isLightGround(theme.background.val)).toBe(scheme === "light");
57
- expect(inSwitchOffBand(off, theme.background.val)).toBe(true);
58
+ // LC-172: the band is measured over the ground the switch sits on, the
59
+ // `$color4` card in dark (FZ-8400).
60
+ expect(
61
+ inSwitchOffBand(
62
+ off,
63
+ switchOffGround({ background: theme.background.val, color4: theme.color4.val })!,
64
+ ),
65
+ ).toBe(true);
58
66
  if (scheme === "light") {
59
67
  const step = Array.from({ length: 12 }, (_, i) => i + 1).find(
60
68
  (n) => theme[`gray${n}`].val === off,
@@ -66,6 +74,10 @@ describe("switch thumb", () => {
66
74
  expect(theme.switchTrackOffPress.val).toBe(theme[`gray${Math.min(step + 1, 12)}`].val);
67
75
  } else {
68
76
  expect(ratio(off, theme.color4.val)).toBeGreaterThanOrEqual(plateContrastRatio);
77
+ expect(ratio(off, theme.color5.val)).toBeGreaterThanOrEqual(plateContrastRatio);
78
+ // A switch on the bare `$color1` page (a toolbar, a row outside a card)
79
+ // still reads as a plate.
80
+ expect(ratio(off, theme.color1.val)).toBeGreaterThanOrEqual(plateContrastRatio);
69
81
  const lum = (color: string) => relativeLuminance(normalizeToHex(color) as string);
70
82
  expect(lum(theme.switchTrackOffHover.val)).toBeLessThan(lum(off));
71
83
  expect(lum(theme.switchTrackOffPress.val)).toBeGreaterThan(lum(off));
@@ -0,0 +1,26 @@
1
+ import { readThemeKeys } from "@multiplatform.one/config/lint";
2
+ import { describe, expect, it } from "vitest";
3
+ import { createThemesBuilder, postPassThemeKeys } from "./createThemes";
4
+ import { defaultAccentTheme } from "./defaults/accent";
5
+ import { defaultBaseTheme } from "./defaults/base";
6
+ import { defaultBuilderOptions } from "./defaults/builderOptions";
7
+
8
+ const themes = createThemesBuilder(
9
+ defaultBaseTheme,
10
+ defaultAccentTheme,
11
+ defaultBuilderOptions,
12
+ ).themes() as Record<string, Record<string, string>>;
13
+
14
+ const builtKeys = new Set(Object.values(themes).flatMap((theme) => Object.keys(theme)));
15
+
16
+ describe("the `$token` lint knows every built theme key", () => {
17
+ it("resolves every key the built themes carry, post-pass keys included", () => {
18
+ const known = readThemeKeys();
19
+ expect(known.size).toBeGreaterThan(0);
20
+ expect([...builtKeys].filter((key) => !known.has(key))).toEqual([]);
21
+ });
22
+
23
+ it("lists no post-pass key the built themes lack", () => {
24
+ expect(postPassThemeKeys.filter((key) => !builtKeys.has(key))).toEqual([]);
25
+ });
26
+ });
@@ -0,0 +1,47 @@
1
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
2
+ import { getTokens, getTokenValue } from "tamagui";
3
+ import { beforeAll, describe, expect, expectTypeOf, it } from "vitest";
4
+ import { tokenNumber, type TokenName } from "./tokenNumber";
5
+
6
+ beforeAll(() => {
7
+ renderWithProviders(<></>);
8
+ });
9
+
10
+ function published(group: "size" | "space" | "radius" | "zIndex") {
11
+ return Object.keys(getTokens()[group] as Record<string, unknown>);
12
+ }
13
+
14
+ describe("tokenNumber (FZ-8409 item 4)", () => {
15
+ it("reads every published size, space, radius and zIndex token by its own name", () => {
16
+ for (const group of ["size", "space", "radius", "zIndex"] as const) {
17
+ const names = published(group);
18
+ expect(names.length).toBeGreaterThan(0);
19
+ for (const name of names) {
20
+ const key = (name.startsWith("$") ? name : `$${name}`) as TokenName;
21
+ expect(tokenNumber(group, key), `${group} ${name}`).toBe(
22
+ Number(getTokenValue(key as Parameters<typeof getTokenValue>[0], group)),
23
+ );
24
+ }
25
+ }
26
+ });
27
+
28
+ it("takes an integer name as a number, a negative one included", () => {
29
+ expect(tokenNumber("space", 4)).toBe(tokenNumber("space", "$4"));
30
+ expect(tokenNumber("size", 10)).toBe(tokenNumber("size", "$10"));
31
+ expect(tokenNumber("space", -2)).toBe(tokenNumber("space", "$-2"));
32
+ expect(tokenNumber("space", 4)).toBeGreaterThan(0);
33
+ });
34
+
35
+ it("returns undefined for a name the scale does not publish", () => {
36
+ expect(tokenNumber("space", 999)).toBeUndefined();
37
+ expect(tokenNumber("radius", "$nope")).toBeUndefined();
38
+ });
39
+
40
+ it("types every name as a number or a $ token, with no cast at the use site", () => {
41
+ expectTypeOf(tokenNumber).parameter(1).toEqualTypeOf<TokenName>();
42
+ expectTypeOf(tokenNumber).returns.toEqualTypeOf<number | undefined>();
43
+ expectTypeOf<4>().toMatchTypeOf<TokenName>();
44
+ expectTypeOf<"$true">().toMatchTypeOf<TokenName>();
45
+ expectTypeOf<"4px">().not.toMatchTypeOf<TokenName>();
46
+ });
47
+ });
@@ -0,0 +1,18 @@
1
+ import { getTokens } from "tamagui";
2
+
3
+ /** A published token name: `$4`, `$0.5`, `$-2`, `$true`, or its integer as a number. */
4
+ export type TokenName = number | `$${string}`;
5
+
6
+ export type NumericTokenGroup = "size" | "space" | "radius" | "zIndex";
7
+
8
+ /**
9
+ * The pixel value of a size, space, radius or zIndex token, typed over every
10
+ * name the scale publishes (integer names included), or undefined when the
11
+ * scale has no such token. Replaces `getTokenValue(name as …)` casts.
12
+ */
13
+ export function tokenNumber(group: NumericTokenGroup, name: TokenName): number | undefined {
14
+ const key = typeof name === "number" ? `$${name}` : name;
15
+ const scale = getTokens()[group] as Record<string, { val?: unknown } | undefined>;
16
+ const value = (scale[key] ?? scale[key.slice(1)])?.val;
17
+ return typeof value === "number" ? value : undefined;
18
+ }
@@ -1,4 +1,4 @@
1
- import { createContext, useContext, useMemo, useSyncExternalStore } from "react";
1
+ import { createContext, useContext, useMemo } from "react";
2
2
  import { type SizeTokens, useThemeName } from "tamagui";
3
3
  import { useTouchSurface } from "./useTouchSurface";
4
4
  import { defaultKnobs, type Knobs } from "./knobs";
@@ -8,6 +8,7 @@ import { resolveKnobs } from "./resolveKnobs";
8
8
  import { usePresetContext } from "./PresetContext";
9
9
  import { defaultIntents } from "./intents";
10
10
  import { clampSurfaceSize, SurfaceContext } from "./Surface";
11
+ import { usePrefersReducedMotion } from "./reducedMotion";
11
12
 
12
13
  export const IntentContext = createContext<string | null>(null);
13
14
 
@@ -15,32 +16,6 @@ export function useIntentContext(): string | null {
15
16
  return useContext(IntentContext);
16
17
  }
17
18
 
18
- const reducedMotionQuery = "(prefers-reduced-motion: reduce)";
19
- const serverReducedMotion = () => false;
20
-
21
- function readReducedMotion(): boolean {
22
- return typeof window !== "undefined" && !!window.matchMedia?.(reducedMotionQuery).matches;
23
- }
24
-
25
- function subscribeReducedMotion(notify: () => void) {
26
- if (typeof window === "undefined" || !window.matchMedia) return () => {};
27
- const mq = window.matchMedia(reducedMotionQuery);
28
- if (typeof mq.addEventListener === "function") {
29
- mq.addEventListener("change", notify);
30
- return () => mq.removeEventListener("change", notify);
31
- }
32
- if (typeof mq.addListener === "function") {
33
- mq.addListener(notify);
34
- return () => mq.removeListener?.(notify);
35
- }
36
- return () => {};
37
- }
38
-
39
- /** Adopt the OS motion preference after matching the server's initial markup. */
40
- function usePrefersReducedMotion(): boolean {
41
- return useSyncExternalStore(subscribeReducedMotion, readReducedMotion, serverReducedMotion);
42
- }
43
-
44
19
  export interface UseResolvedKnobsOptions {
45
20
  intent?: string;
46
21
  component?: string;
@@ -20,7 +20,7 @@ export { applyColorTheme, Preset } from "./theme/Preset";
20
20
  export type { PresetProps } from "./theme/Preset";
21
21
  export { clampSurfaceSize, compareSizeTokens, sizeTokenBelow, sizeTokenStep, sizeTokenStop, Surface, SurfaceContext, surfaceSizeRank, useBarSurface, useElevatedSurface, useFieldSurface, } from "./theme/Surface";
22
22
  export type { SurfaceIntent, SurfaceSize } from "./theme/Surface";
23
- export { controlTierDisabled, controlTierPaint, controlTierWash, isDarkThemeName, } from "./theme/controlTiers";
23
+ export { controlTierDisabled, controlTierPaint, controlTierWash, controlTrackFill, isDarkThemeName, } from "./theme/controlTiers";
24
24
  export type { ControlTier, ControlTierPaint } from "./theme/controlTiers";
25
25
  export { AlertDialogContent, AlertDialogOverlay, DialogContent, DialogOverlay, DialogRegionContext, DialogSheetFaceProvider, DialogShowFocus, overlayScrim, PopoverContent, sheetGrabber, sheetGrabberClearance, sheetGrabberZone, useDialogRegionContext, useDialogSheetFace, useIsInDialogRegion, } from "./theme/overlaySurfaces";
26
26
  export type { DialogContentProps, DialogRegionContextValue } from "./theme/overlaySurfaces";
@@ -80,5 +80,6 @@ export type { ThemeSubset } from "./theme/subsetThemes";
80
80
  export type { SizeKey } from "./theme/scale/scaleInputs";
81
81
  export { listHeightForRows } from "./theme/listRows";
82
82
  export { useTouchSurface } from "./theme/useTouchSurface";
83
+ export { tokenNumber } from "./theme/tokenNumber";
83
84
  export type { GenericFonts, MediaQueryKey, ThemeName } from "@tamagui/web";
84
85
  //# sourceMappingURL=index.gnome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.gnome.d.ts","sourceRoot":"","sources":["../src/index.gnome.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.gnome.d.ts","sourceRoot":"","sources":["../src/index.gnome.ts"],"names":[],"mappings":"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"}
@@ -40,8 +40,8 @@ export declare const menuRowFrame: {
40
40
  * The fill is a selection tint one step off the panel toward the ink, the way
41
41
  * HIG lifts a selection off its material (FZ-8557, Round 40). Light rests on
42
42
  * `$color3` over the white `$color1` panel, a tint and not the `$color4` slab.
43
- * A dark overlay is `$color4` (`surface2`), so dark rests on `$color5`, a step
44
- * lighter: a recessed `$color2` read as a hole in the panel. In a colour theme
43
+ * A dark overlay is `$color5` (the house `surface2`, FZ-8400), so dark rests on
44
+ * `$color6`, a step lighter: a recessed `$color2` read as a hole in the panel. In a colour theme
45
45
  * both steps carry its hue. Hover and press keep the fill, so a checked row
46
46
  * never drops to the transient hover fill. Spread it last on the row so it
47
47
  * wins over the consumer's hover and keyboard-cursor fills; a consumer that
@@ -49,12 +49,12 @@ export declare const menuRowFrame: {
49
49
  * the consumer's.
50
50
  */
51
51
  export declare function menuRowChecked(scheme: ColorScheme): {
52
- readonly backgroundColor: "$color3" | "$color5";
52
+ readonly backgroundColor: "$color3" | "$color6";
53
53
  readonly hoverStyle: {
54
- readonly backgroundColor: "$color3" | "$color5";
54
+ readonly backgroundColor: "$color3" | "$color6";
55
55
  };
56
56
  readonly pressStyle: {
57
- readonly backgroundColor: "$color3" | "$color5";
57
+ readonly backgroundColor: "$color3" | "$color6";
58
58
  };
59
59
  };
60
60
  /** The check mark on a `menuRowChecked` row: the theme's accent (FZ-8557). */
@@ -24,6 +24,7 @@ export declare function resolveAccentOnSurface({ identity, accentSteps, surfaces
24
24
  export declare const accentStepKeys: string[];
25
25
  /** The identity candidates' keys for `themeName`: a tint's own ramp, else the accent ramp. */
26
26
  export declare function identityKeys(themeName: string): string[];
27
+ export declare function pageSurfaces(name: string, values: Record<string, string>): (string | undefined)[];
27
28
  /**
28
29
  * FZ-9608. Every theme with the ink {@link useAccentOnSurface} picks inside it,
29
30
  * as `accentOnSurface`. On web the hook then hands back `$accentOnSurface`, so
@@ -1 +1 @@
1
- {"version":3,"file":"accentInk.d.ts","sourceRoot":"","sources":["../../src/theme/accentInk.ts"],"names":[],"mappings":"AAYA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5C;AAYD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC3C,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACxC,MAAM,GAAG,SAAS,CAiBpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC5C,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,MAAM,CAET;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1C,WAAW,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC7C,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,MAAM,CAkBT;AAED,eAAO,MAAM,cAAc,UAAiE,CAAC;AAE7F,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAKxD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAcxC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAaxC"}
1
+ {"version":3,"file":"accentInk.d.ts","sourceRoot":"","sources":["../../src/theme/accentInk.ts"],"names":[],"mappings":"AAYA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5C;AAYD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAC3C,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACxC,MAAM,GAAG,SAAS,CAiBpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC5C,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,MAAM,CAET;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1C,WAAW,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC7C,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,MAAM,CAkBT;AAED,eAAO,MAAM,cAAc,UAAiE,CAAC;AAE7F,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAKxD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAIjG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAcxC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAaxC"}
@@ -45,8 +45,8 @@ export interface ResolveChartPaletteInput {
45
45
  /** Ordered alternatives when the identity cannot meet the mark contrast floor. */
46
46
  identityCandidates?: readonly (string | undefined)[];
47
47
  /**
48
- * The active colour theme's page and Card fills (`$color2` and `$color3`
49
- * under v5's templates, the same in every sub-theme of that colour). A
48
+ * The active colour theme's page and Card fills (`$background` and the
49
+ * LC-151 card step, the same in every sub-theme of that colour). A
50
50
  * tint's surfaces are deeper than the reference whites, so the identity
51
51
  * must clear them too, and one palette serves a chart on the page or in a
52
52
  * Card.
@@ -44,6 +44,15 @@ export declare const switchOffFillBand: {
44
44
  };
45
45
  /** A ground is light when its relative luminance is past the midpoint. */
46
46
  export declare function isLightGround(ground: string): boolean;
47
+ /**
48
+ * The ground an off Switch track is measured over (LC-172): the page in light,
49
+ * the `$color4` card or field in dark, where grouped layouts put a switch and
50
+ * where UISwitch composites its system fill over the cell (FZ-8400).
51
+ */
52
+ export declare function switchOffGround(scope: {
53
+ background?: string;
54
+ color4?: string;
55
+ }): string | undefined;
47
56
  /** HIG's system fill at `alpha` composited over `ground`, as an opaque hex colour. */
48
57
  export declare function systemFillHex(ground: string, alpha: number): string | null;
49
58
  /** HIG's system fill at `alpha` composited over `ground`, as relative luminance. */