@multiplatform.one/theme 7.90.5 → 8.0.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 (186) hide show
  1. package/dist/cjs/index.gnome.cjs +432 -0
  2. package/dist/cjs/index.gnome.native.js +435 -0
  3. package/dist/cjs/index.gnome.native.js.map +1 -0
  4. package/dist/cjs/{theme/useColorScale.native.js → nativeTwins.cjs} +11 -10
  5. package/dist/cjs/{theme/useColorScale.cjs → nativeTwins.native.js} +14 -24
  6. package/dist/cjs/nativeTwins.native.js.map +1 -0
  7. package/dist/cjs/theme/Surface.cjs +2 -10
  8. package/dist/cjs/theme/Surface.native.js +3 -12
  9. package/dist/cjs/theme/Surface.native.js.map +1 -1
  10. package/dist/cjs/theme/devtools/ColorLineVisualizer.cjs +91 -89
  11. package/dist/cjs/theme/devtools/ColorLineVisualizer.native.js +79 -88
  12. package/dist/cjs/theme/devtools/ColorLineVisualizer.native.js.map +1 -1
  13. package/dist/cjs/theme/devtools/ThemeDevtoolsPanel.cjs +1 -1
  14. package/dist/cjs/theme/devtools/ThemeDevtoolsPanel.native.js +1 -1
  15. package/dist/cjs/theme/devtools/index.cjs +25 -0
  16. package/dist/cjs/theme/devtools/index.native.js +28 -0
  17. package/dist/cjs/theme/devtools/index.native.js.map +1 -0
  18. package/dist/cjs/theme/devtools/knobIcons.cjs +147 -149
  19. package/dist/cjs/theme/devtools/knobIcons.native.js +135 -149
  20. package/dist/cjs/theme/devtools/knobIcons.native.js.map +1 -1
  21. package/dist/cjs/theme/nativePresetSwitch.cjs +45 -0
  22. package/dist/cjs/theme/nativePresetSwitch.native.js +50 -0
  23. package/dist/cjs/theme/nativePresetSwitch.native.js.map +1 -0
  24. package/dist/cjs/theme/nativeSchemePreference.cjs +72 -0
  25. package/dist/cjs/theme/nativeSchemePreference.native.js +80 -0
  26. package/dist/cjs/theme/nativeSchemePreference.native.js.map +1 -0
  27. package/dist/cjs/theme/nativeTheme.cjs +107 -0
  28. package/dist/cjs/theme/nativeTheme.native.js +115 -0
  29. package/dist/cjs/theme/nativeTheme.native.js.map +1 -0
  30. package/dist/cjs/theme/nativeTransitionProps.cjs +69 -0
  31. package/dist/cjs/theme/nativeTransitionProps.native.js +81 -0
  32. package/dist/cjs/theme/nativeTransitionProps.native.js.map +1 -0
  33. package/dist/cjs/theme/recipeInputs.native.js.map +1 -1
  34. package/dist/cjs/theme/resolveKnobs.cjs +0 -5
  35. package/dist/cjs/theme/resolveKnobs.native.js +0 -5
  36. package/dist/cjs/theme/resolveKnobs.native.js.map +1 -1
  37. package/dist/cjs/theme/sizeRecipes.cjs +3 -13
  38. package/dist/cjs/theme/sizeRecipes.native.js +3 -13
  39. package/dist/cjs/theme/sizeRecipes.native.js.map +1 -1
  40. package/dist/cjs/theme/theme.native.js +2 -94
  41. package/dist/cjs/theme/theme.native.js.map +1 -1
  42. package/dist/cjs/theme/transitionProps.native.js +2 -60
  43. package/dist/cjs/theme/transitionProps.native.js.map +1 -1
  44. package/dist/cjs/theme/usePresetSwitch.native.js +2 -29
  45. package/dist/cjs/theme/usePresetSwitch.native.js.map +1 -1
  46. package/dist/cjs/theme/useSchemePreference.native.js +2 -59
  47. package/dist/cjs/theme/useSchemePreference.native.js.map +1 -1
  48. package/dist/esm/index.gnome.mjs +48 -0
  49. package/dist/esm/index.gnome.mjs.map +1 -0
  50. package/dist/esm/index.gnome.native.js +48 -0
  51. package/dist/esm/index.gnome.native.js.map +1 -0
  52. package/dist/esm/nativeTwins.mjs +6 -0
  53. package/dist/esm/nativeTwins.mjs.map +1 -0
  54. package/dist/esm/nativeTwins.native.js +6 -0
  55. package/dist/esm/nativeTwins.native.js.map +1 -0
  56. package/dist/esm/theme/Surface.mjs +2 -9
  57. package/dist/esm/theme/Surface.mjs.map +1 -1
  58. package/dist/esm/theme/Surface.native.js +3 -11
  59. package/dist/esm/theme/Surface.native.js.map +1 -1
  60. package/dist/esm/theme/devtools/ColorLineVisualizer.mjs +80 -89
  61. package/dist/esm/theme/devtools/ColorLineVisualizer.mjs.map +1 -1
  62. package/dist/esm/theme/devtools/ColorLineVisualizer.native.js +79 -88
  63. package/dist/esm/theme/devtools/ColorLineVisualizer.native.js.map +1 -1
  64. package/dist/esm/theme/devtools/ThemeDevtoolsPanel.mjs +1 -1
  65. package/dist/esm/theme/devtools/ThemeDevtoolsPanel.mjs.map +1 -1
  66. package/dist/esm/theme/devtools/ThemeDevtoolsPanel.native.js +1 -1
  67. package/dist/esm/theme/devtools/ThemeDevtoolsPanel.native.js.map +1 -1
  68. package/dist/esm/theme/devtools/index.mjs +7 -0
  69. package/dist/esm/theme/devtools/index.mjs.map +1 -0
  70. package/dist/esm/theme/devtools/index.native.js +7 -0
  71. package/dist/esm/theme/devtools/index.native.js.map +1 -0
  72. package/dist/esm/theme/devtools/knobIcons.mjs +136 -149
  73. package/dist/esm/theme/devtools/knobIcons.mjs.map +1 -1
  74. package/dist/esm/theme/devtools/knobIcons.native.js +135 -149
  75. package/dist/esm/theme/devtools/knobIcons.native.js.map +1 -1
  76. package/dist/esm/theme/nativePresetSwitch.mjs +20 -0
  77. package/dist/esm/theme/nativePresetSwitch.mjs.map +1 -0
  78. package/dist/esm/theme/nativePresetSwitch.native.js +22 -0
  79. package/dist/esm/theme/nativePresetSwitch.native.js.map +1 -0
  80. package/dist/esm/theme/nativeSchemePreference.mjs +47 -0
  81. package/dist/esm/theme/nativeSchemePreference.mjs.map +1 -0
  82. package/dist/esm/theme/nativeSchemePreference.native.js +52 -0
  83. package/dist/esm/theme/nativeSchemePreference.native.js.map +1 -0
  84. package/dist/esm/theme/nativeTheme.mjs +82 -0
  85. package/dist/esm/theme/nativeTheme.mjs.map +1 -0
  86. package/dist/esm/theme/nativeTheme.native.js +87 -0
  87. package/dist/esm/theme/nativeTheme.native.js.map +1 -0
  88. package/dist/esm/theme/nativeTransitionProps.mjs +44 -0
  89. package/dist/esm/theme/nativeTransitionProps.mjs.map +1 -0
  90. package/dist/esm/theme/nativeTransitionProps.native.js +53 -0
  91. package/dist/esm/theme/nativeTransitionProps.native.js.map +1 -0
  92. package/dist/esm/theme/recipeInputs.mjs.map +1 -1
  93. package/dist/esm/theme/recipeInputs.native.js.map +1 -1
  94. package/dist/esm/theme/resolveKnobs.mjs +0 -5
  95. package/dist/esm/theme/resolveKnobs.mjs.map +1 -1
  96. package/dist/esm/theme/resolveKnobs.native.js +0 -5
  97. package/dist/esm/theme/resolveKnobs.native.js.map +1 -1
  98. package/dist/esm/theme/sizeRecipes.mjs +4 -9
  99. package/dist/esm/theme/sizeRecipes.mjs.map +1 -1
  100. package/dist/esm/theme/sizeRecipes.native.js +4 -9
  101. package/dist/esm/theme/sizeRecipes.native.js.map +1 -1
  102. package/dist/esm/theme/theme.native.js +1 -86
  103. package/dist/esm/theme/theme.native.js.map +1 -1
  104. package/dist/esm/theme/transitionProps.native.js +1 -52
  105. package/dist/esm/theme/transitionProps.native.js.map +1 -1
  106. package/dist/esm/theme/usePresetSwitch.native.js +1 -21
  107. package/dist/esm/theme/usePresetSwitch.native.js.map +1 -1
  108. package/dist/esm/theme/useSchemePreference.native.js +1 -51
  109. package/dist/esm/theme/useSchemePreference.native.js.map +1 -1
  110. package/package.json +54 -6
  111. package/src/index.gnome.ts +544 -0
  112. package/src/nativeTwins.ts +11 -0
  113. package/src/theme/Surface.spec.tsx +0 -34
  114. package/src/theme/Surface.tsx +1 -20
  115. package/src/theme/devtools/ColorLineVisualizer.tsx +1 -0
  116. package/src/theme/devtools/ThemeDevtoolsPanel.tsx +1 -1
  117. package/src/theme/devtools/index.ts +14 -0
  118. package/src/theme/devtools/knobIcons.tsx +1 -0
  119. package/src/theme/mpo19Proof.spec.ts +0 -5
  120. package/src/theme/nativePresetSwitch.ts +32 -0
  121. package/src/theme/nativeSchemePreference.ts +58 -0
  122. package/src/theme/nativeTheme.tsx +113 -0
  123. package/src/theme/nativeTransitionProps.ts +74 -0
  124. package/src/theme/recipeInputs.ts +0 -5
  125. package/src/theme/recipes.ts +1 -7
  126. package/src/theme/resolveKnobs.spec.ts +4 -7
  127. package/src/theme/resolveKnobs.ts +0 -5
  128. package/src/theme/shared.tsx +4 -4
  129. package/src/theme/sizeLadder.spec.ts +4 -5
  130. package/src/theme/sizeRecipes.spec.ts +11 -16
  131. package/src/theme/sizeRecipes.ts +12 -19
  132. package/src/theme/theme.native.tsx +1 -113
  133. package/src/theme/theme.provider.spec.ts +1 -1
  134. package/src/theme/transitionProps.native.ts +1 -74
  135. package/src/theme/usePresetSwitch.native.ts +1 -32
  136. package/src/theme/useResolvedKnobs.hydration.spec.tsx +1 -1
  137. package/src/theme/useResolvedKnobsBehavior.spec.tsx +3 -3
  138. package/src/theme/useSchemePreference.native.ts +1 -58
  139. package/types/index.gnome.d.ts +84 -0
  140. package/types/index.gnome.d.ts.map +1 -0
  141. package/types/nativeTwins.d.ts +11 -0
  142. package/types/nativeTwins.d.ts.map +1 -0
  143. package/types/theme/Surface.d.ts +2 -13
  144. package/types/theme/Surface.d.ts.map +1 -1
  145. package/types/theme/devtools/ColorLineVisualizer.d.ts +3 -1
  146. package/types/theme/devtools/ColorLineVisualizer.d.ts.map +1 -1
  147. package/types/theme/devtools/index.d.ts +14 -0
  148. package/types/theme/devtools/index.d.ts.map +1 -0
  149. package/types/theme/devtools/knobIcons.d.ts +1 -0
  150. package/types/theme/devtools/knobIcons.d.ts.map +1 -1
  151. package/types/theme/nativePresetSwitch.d.ts +10 -0
  152. package/types/theme/nativePresetSwitch.d.ts.map +1 -0
  153. package/types/theme/nativeSchemePreference.d.ts +8 -0
  154. package/types/theme/nativeSchemePreference.d.ts.map +1 -0
  155. package/types/theme/nativeTheme.d.ts +19 -0
  156. package/types/theme/nativeTheme.d.ts.map +1 -0
  157. package/types/theme/nativeTransitionProps.d.ts +15 -0
  158. package/types/theme/nativeTransitionProps.d.ts.map +1 -0
  159. package/types/theme/recipeInputs.d.ts +0 -4
  160. package/types/theme/recipeInputs.d.ts.map +1 -1
  161. package/types/theme/recipes.d.ts +2 -9
  162. package/types/theme/recipes.d.ts.map +1 -1
  163. package/types/theme/resolveKnobs.d.ts.map +1 -1
  164. package/types/theme/shared.d.ts +4 -4
  165. package/types/theme/shared.d.ts.map +1 -1
  166. package/types/theme/sizeRecipes.d.ts +8 -13
  167. package/types/theme/sizeRecipes.d.ts.map +1 -1
  168. package/types/theme/theme.native.d.ts +1 -18
  169. package/types/theme/theme.native.d.ts.map +1 -1
  170. package/types/theme/transitionProps.native.d.ts +1 -14
  171. package/types/theme/transitionProps.native.d.ts.map +1 -1
  172. package/types/theme/usePresetSwitch.native.d.ts +1 -9
  173. package/types/theme/usePresetSwitch.native.d.ts.map +1 -1
  174. package/types/theme/useSchemePreference.native.d.ts +1 -7
  175. package/types/theme/useSchemePreference.native.d.ts.map +1 -1
  176. package/dist/cjs/theme/useColorScale.native.js.map +0 -1
  177. package/dist/esm/theme/useColorScale.mjs +0 -22
  178. package/dist/esm/theme/useColorScale.mjs.map +0 -1
  179. package/dist/esm/theme/useColorScale.native.js +0 -5
  180. package/dist/esm/theme/useColorScale.native.js.map +0 -1
  181. package/src/theme/useColorScale.native.ts +0 -7
  182. package/src/theme/useColorScale.ts +0 -29
  183. package/types/theme/useColorScale.d.ts +0 -7
  184. package/types/theme/useColorScale.d.ts.map +0 -1
  185. package/types/theme/useColorScale.native.d.ts +0 -6
  186. package/types/theme/useColorScale.native.d.ts.map +0 -1
@@ -5,12 +5,7 @@ import { getActiveScaleTokens, setActiveScaleTokens } from "./scale/activeScale"
5
5
  import { generateScale } from "./scale/generateScale";
6
6
  import {
7
7
  DEFAULT_SIZE_RECIPE_INPUTS,
8
- SIZE_RECIPE_CHIP_RATIOS,
9
8
  SIZE_RECIPE_FAMILY_NAMES,
10
- SIZE_RECIPE_HEIGHTS,
11
- SIZE_RECIPE_HEIGHTS_TOUCH,
12
- SIZE_RECIPE_RADII,
13
- SIZE_RECIPE_RATIOS,
14
9
  applyTouchFloor,
15
10
  defaultRecipeInputs,
16
11
  generateSizeRecipeTables,
@@ -49,8 +44,8 @@ describe("size recipes", () => {
49
44
  });
50
45
  expect(sizeRecipeFromHeight(40)).toEqual(recipe);
51
46
  expect(sizeRecipeForToken("$4")).toEqual(recipe);
52
- expect(SIZE_RECIPE_HEIGHTS.$4).toBe(40);
53
- expect(SIZE_RECIPE_RATIOS).toEqual({
47
+ expect(recipeFamilies.control.heights.$4).toBe(40);
48
+ expect(recipeFamilies.control.ratios).toEqual({
54
49
  padX: 16 / 40,
55
50
  font: 15 / 40,
56
51
  icon: 16 / 40,
@@ -60,7 +55,7 @@ describe("size recipes", () => {
60
55
 
61
56
  it("$true equals $4", () => {
62
57
  expect(sizeRecipes.$true).toEqual(sizeRecipes.$4);
63
- expect(SIZE_RECIPE_HEIGHTS.$true).toBe(SIZE_RECIPE_HEIGHTS.$4);
58
+ expect(recipeFamilies.control.heights.$true).toBe(recipeFamilies.control.heights.$4);
64
59
  expect(sizeRecipeForToken("$true")).toEqual(sizeRecipeForToken("$4"));
65
60
  });
66
61
 
@@ -217,7 +212,7 @@ describe("generateSizeRecipes (LC-70)", () => {
217
212
  expect(generateSizeRecipeTables(defaultRecipeInputs).touchHeights).toEqual(
218
213
  generated.heightsTouch,
219
214
  );
220
- expect(SIZE_RECIPE_HEIGHTS_TOUCH.$4).toBe(44);
215
+ expect(recipeFamilies.control.touchHeights.$4).toBe(44);
221
216
  });
222
217
 
223
218
  it("control: 40 regenerates $4 from the scale and keeps $5 distinct", () => {
@@ -266,7 +261,7 @@ describe("generateSizeRecipes (LC-70)", () => {
266
261
 
267
262
  it("setSizeRecipeInputs({ control }) regenerates live tables from the scale", () => {
268
263
  setSizeRecipeInputs({ control: 36 });
269
- expect(SIZE_RECIPE_HEIGHTS.$4).toBe(36);
264
+ expect(recipeFamilies.control.heights.$4).toBe(36);
270
265
  expect(sizeRecipes.$4.height).toBe(36);
271
266
  expect(sizeRecipeForToken("$4").height).toBe(36);
272
267
  expect(sizeRecipeBoxVariants.$4.height).toBe(36);
@@ -278,8 +273,6 @@ describe("generateSizeRecipes (LC-70)", () => {
278
273
  expect(sizeRecipes).toBe(recipeFamilies.control.recipes);
279
274
  expect(sizeRecipeTypeVariants).toBe(recipeFamilies.control.typeVariants);
280
275
  expect(sizeRecipeIconVariants).toBe(recipeFamilies.control.iconVariants);
281
- expect(SIZE_RECIPE_HEIGHTS).toBe(recipeFamilies.control.heights);
282
- expect(SIZE_RECIPE_RADII).toBe(recipeFamilies.control.radii);
283
276
  });
284
277
 
285
278
  it("sizeRecipeEscape is identity", () => {
@@ -329,7 +322,9 @@ describe("size recipe families", () => {
329
322
  expect(getSizeRecipeFamily("control")).toEqual(control);
330
323
  for (const token of RECIPE_KEYS) {
331
324
  expect(control.boxVariants[token]).toEqual(sizeRecipeBoxVariants[token]);
332
- expect(control.heightVariants[token]).toEqual({ height: SIZE_RECIPE_HEIGHTS[token] });
325
+ expect(control.heightVariants[token]).toEqual({
326
+ height: recipeFamilies.control.heights[token],
327
+ });
333
328
  }
334
329
  expect(control.boxVariants.$4).toEqual({
335
330
  height: 40,
@@ -341,7 +336,7 @@ describe("size recipe families", () => {
341
336
  it("chip keeps height and tightens padX", () => {
342
337
  const compact = getSizeRecipeFamily("chip");
343
338
  const control = getSizeRecipeFamily("control");
344
- expect(compact.ratios).toEqual(SIZE_RECIPE_CHIP_RATIOS);
339
+ expect(compact.ratios).toEqual(recipeFamilies.chip.ratios);
345
340
  expect(compact.boxVariants.$4.height).toBe(control.boxVariants.$4.height);
346
341
  expect(compact.boxVariants.$4.paddingHorizontal).toBeLessThan(
347
342
  control.boxVariants.$4.paddingHorizontal,
@@ -361,7 +356,7 @@ describe("size recipe families", () => {
361
356
  it("chip reads input padX and type one key below at the control's heights", () => {
362
357
  const chip = getSizeRecipeFamily("chip");
363
358
  for (const token of RECIPE_KEYS) {
364
- expect(chip.heights[token]).toBe(SIZE_RECIPE_HEIGHTS[token]);
359
+ expect(chip.heights[token]).toBe(recipeFamilies.control.heights[token]);
365
360
  expect(chip.recipes[token].paddingHorizontal).toBe(
366
361
  DEFAULT_SIZE_RECIPE_INPUTS.inputPadX[token],
367
362
  );
@@ -374,7 +369,7 @@ describe("size recipe families", () => {
374
369
  expect(menuRow.recipes.$true).toEqual(menuRow.recipes.$4);
375
370
  expect(sizeRecipeForToken("$4", { family: "menuRow", touch: true }).height).toBe(44);
376
371
  for (const token of RECIPE_KEYS) {
377
- expect(menuRow.heights[token]).toBe(SIZE_RECIPE_HEIGHTS[recipeKeyBelow(token)]);
372
+ expect(menuRow.heights[token]).toBe(recipeFamilies.control.heights[recipeKeyBelow(token)]);
378
373
  expect(menuRow.recipes[token].paddingHorizontal).toBe(sizeRecipes.$3.paddingHorizontal);
379
374
  expect(menuRow.recipes[token].fontSize).toBe(sizeRecipes[token].fontSize);
380
375
  }
@@ -55,8 +55,6 @@ export {
55
55
  export type {
56
56
  GeneratedSizeRecipes,
57
57
  RecipeFamilies,
58
- RecipeFamilyName,
59
- RecipeInputs,
60
58
  SizeRecipe,
61
59
  SizeRecipeBoxVariant,
62
60
  SizeRecipeFamily,
@@ -79,10 +77,10 @@ import {
79
77
  generateSizeRecipes,
80
78
  sizeRecipeFromHeight as recipeFromHeight,
81
79
  type GeneratedSizeRecipes,
82
- type RecipeFamilyName,
83
- type RecipeInputs,
84
80
  type SizeRecipe,
85
81
  type SizeRecipeFamily,
82
+ type SizeRecipeFamilyName,
83
+ type SizeRecipeInputs,
86
84
  type SizeRecipeToken,
87
85
  } from "./recipeInputs";
88
86
 
@@ -121,11 +119,6 @@ export const sizeRecipes = recipeFamilies.control.recipes;
121
119
  export const sizeRecipeBoxVariants = recipeFamilies.control.boxVariants;
122
120
  export const sizeRecipeTypeVariants = recipeFamilies.control.typeVariants;
123
121
  export const sizeRecipeIconVariants = recipeFamilies.control.iconVariants;
124
- export const SIZE_RECIPE_HEIGHTS = recipeFamilies.control.heights;
125
- export const SIZE_RECIPE_HEIGHTS_TOUCH = recipeFamilies.control.touchHeights;
126
- export const SIZE_RECIPE_RADII = recipeFamilies.control.radii;
127
- export const SIZE_RECIPE_RATIOS = recipeFamilies.control.ratios;
128
- export const SIZE_RECIPE_CHIP_RATIOS = recipeFamilies.chip.ratios;
129
122
 
130
123
  export const SIZE_RECIPE_FAMILY_NAMES = ["control", "chip", "menuRow", "tab"] as const;
131
124
 
@@ -150,25 +143,25 @@ function adoptGenerated(next: GeneratedSizeRecipes): GeneratedSizeRecipes {
150
143
  current = {
151
144
  ...next,
152
145
  tiles: tileSizeLadder,
153
- heights: SIZE_RECIPE_HEIGHTS,
154
- heightsTouch: SIZE_RECIPE_HEIGHTS_TOUCH,
146
+ heights: recipeFamilies.control.heights,
147
+ heightsTouch: recipeFamilies.control.touchHeights,
155
148
  recipes: sizeRecipes,
156
149
  recipesTouch: recipeFamilies.control.recipesTouch,
157
150
  boxVariants: sizeRecipeBoxVariants,
158
151
  typeVariants: sizeRecipeTypeVariants,
159
152
  iconVariants: sizeRecipeIconVariants,
160
- radii: SIZE_RECIPE_RADII,
153
+ radii: recipeFamilies.control.radii,
161
154
  families: recipeFamilies,
162
155
  };
163
156
  return current;
164
157
  }
165
158
 
166
159
  /** Merge `partial` over defaultRecipeInputs (not the previous override) and rewrite live tables. */
167
- export function setSizeRecipeInputs(partial: Partial<RecipeInputs> = {}): GeneratedSizeRecipes {
160
+ export function setSizeRecipeInputs(partial: Partial<SizeRecipeInputs> = {}): GeneratedSizeRecipes {
168
161
  return adoptGenerated(generateSizeRecipes(partial));
169
162
  }
170
163
 
171
- export function getSizeRecipeInputs(): RecipeInputs {
164
+ export function getSizeRecipeInputs(): SizeRecipeInputs {
172
165
  return cloneSizeRecipeInputs(current.inputs);
173
166
  }
174
167
 
@@ -176,18 +169,18 @@ export function getGeneratedSizeRecipes(): GeneratedSizeRecipes {
176
169
  return current;
177
170
  }
178
171
 
179
- export function getSizeRecipeFamily(name: RecipeFamilyName = "control"): SizeRecipeFamily {
172
+ export function getSizeRecipeFamily(name: SizeRecipeFamilyName = "control"): SizeRecipeFamily {
180
173
  return recipeFamilies[name] ?? recipeFamilies.control;
181
174
  }
182
175
 
183
176
  export function sizeRecipeFromHeight(
184
177
  height: number,
185
- ratios: RecipeInputs["ratios"] = current.inputs.ratios,
178
+ ratios: SizeRecipeInputs["ratios"] = current.inputs.ratios,
186
179
  ): SizeRecipe {
187
180
  return recipeFromHeight(height, ratios);
188
181
  }
189
182
 
190
- function resolveFamily(family?: RecipeFamilyName | SizeRecipeFamily): SizeRecipeFamily {
183
+ function resolveFamily(family?: SizeRecipeFamilyName | SizeRecipeFamily): SizeRecipeFamily {
191
184
  if (family && typeof family === "object") return family;
192
185
  return recipeFamilies[family ?? "control"] ?? recipeFamilies.control;
193
186
  }
@@ -195,7 +188,7 @@ function resolveFamily(family?: RecipeFamilyName | SizeRecipeFamily): SizeRecipe
195
188
  export function applyTouchFloor(
196
189
  recipe: SizeRecipe,
197
190
  touch: boolean,
198
- family?: RecipeFamilyName | SizeRecipeFamily,
191
+ family?: SizeRecipeFamilyName | SizeRecipeFamily,
199
192
  ): SizeRecipe {
200
193
  if (!touch) return recipe;
201
194
  const tables = resolveFamily(family);
@@ -219,7 +212,7 @@ export function applyTouchFloor(
219
212
 
220
213
  export function sizeRecipeForToken(
221
214
  token: string,
222
- options?: { touch?: boolean; family?: RecipeFamilyName | SizeRecipeFamily },
215
+ options?: { touch?: boolean; family?: SizeRecipeFamilyName | SizeRecipeFamily },
223
216
  ): SizeRecipe {
224
217
  const tables = resolveFamily(options?.family);
225
218
  const table = options?.touch ? tables.recipesTouch : tables.recipes;
@@ -1,113 +1 @@
1
- import { ToastProvider } from "@tamagui/toast";
2
- import { Fragment, useContext, useMemo, useSyncExternalStore } from "react";
3
- import {
4
- type CreateTamaguiProps,
5
- TamaguiProvider,
6
- type TamaguiProviderProps,
7
- Theme,
8
- } from "tamagui";
9
- import type { PropsWithChildren } from "react";
10
- import { CornerSmoothingStyles } from "./cornerSmoothing";
11
- import { FontKnobStyles } from "./FontKnobStyles";
12
- import type { Knobs } from "./knobs";
13
- import { PresetContext, type PresetContextValue } from "./PresetContext";
14
- import { getStoredPreset, subscribeStoredPreset } from "./presetStore";
15
- import { defaultPreset } from "./presets";
16
- import { resolveThemeScale, useActiveScale } from "./scale/useActiveScale";
17
- import { type ThemeConfig, getPreset } from "./shared";
18
- import { useSchemePreference } from "./useSchemePreference";
19
-
20
- // ---------------------------------------------------------------------------
21
- // ThemeProviderProps (simplified — knob-based theming)
22
- // ---------------------------------------------------------------------------
23
-
24
- export interface ThemeProviderProps<
25
- T extends CreateTamaguiProps = CreateTamaguiProps,
26
- > extends PropsWithChildren<Omit<TamaguiProviderProps, "config" | "defaultTheme">> {
27
- config?: {
28
- tamagui: ReturnType<typeof import("tamagui").createTamagui<T>>;
29
- } & Partial<Pick<ThemeConfig, "scales" | "defaultPreset">>;
30
- systemTheme?: "light" | "dark";
31
- }
32
-
33
- // ---------------------------------------------------------------------------
34
- // ThemeProvider (simplified — TamaguiProvider + scheme + ToastProvider)
35
- // ---------------------------------------------------------------------------
36
-
37
- /**
38
- * Native resolves token values (`.val`) at render and only theme subscribers
39
- * re-render on a config change, so a preset whose scale differs remounts the
40
- * subtree under the provider (keyed on the scale id). That is a settings-level
41
- * action: local component state under the provider does not survive it.
42
- * The preset persists in `@multiplatform.one/store` storage (`mp.preset`);
43
- * first render waits for storage so a relaunch paints the stored scale.
44
- */
45
- export function ThemeProvider<T extends CreateTamaguiProps>({
46
- children,
47
- config,
48
- systemTheme,
49
- ...tamaguiProps
50
- }: ThemeProviderProps<T>) {
51
- const scheme = useSchemePreference();
52
- const activeTheme = systemTheme ?? scheme.value;
53
- const ancestor = useContext(PresetContext);
54
- const stored = useSyncExternalStore(subscribeStoredPreset, getStoredPreset, getStoredPreset);
55
- const presetName = (ancestor ? ancestor.presetName : stored.presetName) ?? config?.defaultPreset;
56
- const scaleId = useActiveScale(config, presetName);
57
- const scaleConfig = resolveThemeScale(config, presetName)?.tamagui() ?? config?.tamagui;
58
-
59
- return (
60
- <TamaguiProvider
61
- {...tamaguiProps}
62
- config={scaleConfig as TamaguiProviderProps["config"]}
63
- defaultTheme={activeTheme}
64
- disableInjectCSS={false}
65
- >
66
- {ancestor || stored.hydrated ? (
67
- <Fragment key={scaleId}>
68
- <ToastProvider>
69
- <KnobBridge presetName={presetName} overrides={stored.overrides} scaleId={scaleId}>
70
- {children}
71
- </KnobBridge>
72
- </ToastProvider>
73
- </Fragment>
74
- ) : null}
75
- </TamaguiProvider>
76
- );
77
- }
78
-
79
- function KnobBridge({
80
- children,
81
- presetName,
82
- overrides,
83
- scaleId,
84
- }: PropsWithChildren<{ presetName?: string; overrides: Partial<Knobs>; scaleId: string }>) {
85
- const existingCtx = useContext(PresetContext);
86
-
87
- const presetCtxValue = useMemo<PresetContextValue>(() => {
88
- const base = (presetName ? getPreset(presetName) : undefined) ?? defaultPreset;
89
- return {
90
- preset: { ...base, knobs: { ...base.knobs, ...overrides } },
91
- overrides,
92
- presetName,
93
- scaleId,
94
- };
95
- }, [presetName, overrides, scaleId]);
96
-
97
- const tree = (
98
- <>
99
- <FontKnobStyles />
100
- <CornerSmoothingStyles />
101
- {children}
102
- </>
103
- );
104
-
105
- const theme = (existingCtx ?? presetCtxValue).preset.theme;
106
- const themedTree = theme ? <Theme name={theme}>{tree}</Theme> : tree;
107
-
108
- if (existingCtx) {
109
- return themedTree;
110
- }
111
-
112
- return <PresetContext.Provider value={presetCtxValue}>{themedTree}</PresetContext.Provider>;
113
- }
1
+ export * from "./nativeTheme";
@@ -42,7 +42,7 @@ describe("ThemeProvider knob injectors", () => {
42
42
  expect(src).toMatch(/import \{ CornerSmoothingStyles \} from "\.\/cornerSmoothing"/);
43
43
  const bridge = src.slice(src.indexOf("function KnobBridge"));
44
44
  expect(bridge).toContain("<CornerSmoothingStyles");
45
- const native = readFileSync(join(here, "theme.native.tsx"), "utf8");
45
+ const native = readFileSync(join(here, "nativeTheme.tsx"), "utf8");
46
46
  expect(native).toContain("<CornerSmoothingStyles");
47
47
  });
48
48
 
@@ -1,74 +1 @@
1
- import type { MotionRole } from "./motion";
2
- import type { TransitionProp } from "tamagui";
3
- import { animationConfig as nativeAnimationConfig } from "./animations/reactNative";
4
-
5
- /**
6
- * Native twin of `transitionProps.ts`.
7
- *
8
- * The React Native driver resolves an undefined `transition` to an empty
9
- * config and animates with a default spring (LC-59), so keeping the key at
10
- * animation `none` would put motion on every part that is meant to be still.
11
- * Native keeps omitting it until the driver has an instant token to pass.
12
- */
13
- export function transitionProps(
14
- role: MotionRole | TransitionProp | undefined,
15
- extra: readonly string[] = [],
16
- ): {
17
- transition?: TransitionProp;
18
- animateOnly?: string[];
19
- } {
20
- const isRole = isMotionRole(role);
21
- const transition = isRole ? role.transition : role;
22
- if (transition === undefined) return {};
23
- if (!isRole) return { transition };
24
- const properties = [...role.animateOnly, ...extra].flatMap(
25
- (property) => nativeLonghands[property] ?? [property],
26
- );
27
- if (typeof transition !== "string") return { transition, animateOnly: properties };
28
- const exit = typeof role.exit === "string" && role.exit !== transition ? role.exit : undefined;
29
- const clamp = isSpring(transition) && !presetBounce.has(transition);
30
- if (!exit && !clamp) return { transition, animateOnly: properties };
31
- return {
32
- transition: [
33
- transition,
34
- { ...(clamp ? { overshootClamping: true } : {}), ...(exit ? { exit } : {}) },
35
- ],
36
- animateOnly: properties,
37
- };
38
- }
39
-
40
- function isSpring(stop: string): boolean {
41
- const config = nativeAnimationConfig[stop as keyof typeof nativeAnimationConfig] as
42
- | { type?: string }
43
- | undefined;
44
- return config !== undefined && config.type !== "timing";
45
- }
46
-
47
- /**
48
- * FZ-7919: tamagui expands `borderColor` into its four sides before the React
49
- * Native driver sees the style, and the driver matches `animateOnly` by exact
50
- * key. A render therefore painted the sides as static, while a pseudo state
51
- * (the bubbled focus of a field's text input) animated them. The animated
52
- * copy outranked the static one and held the previous focus or theme colour.
53
- */
54
- const presetBounce = new Set(["bouncy", "superBouncy"]);
55
-
56
- const nativeLonghands: Record<string, readonly string[]> = {
57
- borderColor: [
58
- "borderColor",
59
- "borderTopColor",
60
- "borderRightColor",
61
- "borderBottomColor",
62
- "borderLeftColor",
63
- ],
64
- };
65
-
66
- function isMotionRole(value: MotionRole | TransitionProp | undefined): value is MotionRole {
67
- return (
68
- typeof value === "object" &&
69
- value !== null &&
70
- "transition" in value &&
71
- "animateOnly" in value &&
72
- Array.isArray(value.animateOnly)
73
- );
74
- }
1
+ export * from "./nativeTransitionProps";
@@ -1,32 +1 @@
1
- import { useCallback, useSyncExternalStore } from "react";
2
- import { usePresetContext } from "./PresetContext";
3
- import {
4
- getStoredPreset,
5
- recordPresetChoice,
6
- setStoredPreset,
7
- subscribeStoredPreset,
8
- } from "./presetStore";
9
-
10
- export interface PresetSwitch {
11
- /** The provider's active preset; "default" when none is stored. */
12
- presetName: string;
13
- /** Switch the active preset without recording anyone's choice. */
14
- applyPreset(name: string): void;
15
- /** Switch and record it as this user's choice (no user = this device's signed-out choice). */
16
- choosePreset(name: string, userId?: string | null): void;
17
- }
18
-
19
- export function usePresetSwitch(): PresetSwitch {
20
- const context = usePresetContext();
21
- const stored = useSyncExternalStore(subscribeStoredPreset, getStoredPreset, getStoredPreset);
22
- const presetName = context?.presetName || stored.presetName || "default";
23
- const applyPreset = useCallback((name: string) => setStoredPreset(name), []);
24
- const choosePreset = useCallback(
25
- (name: string, userId?: string | null) => {
26
- recordPresetChoice(name, userId);
27
- applyPreset(name);
28
- },
29
- [applyPreset],
30
- );
31
- return { presetName, applyPreset, choosePreset };
32
- }
1
+ export * from "./nativePresetSwitch";
@@ -39,7 +39,7 @@ let observed: { height: unknown; transition: unknown }[];
39
39
  function Probe() {
40
40
  const { knobProps } = useResolvedKnobs();
41
41
  const height = knobProps.control.height;
42
- const transition = knobProps.transition;
42
+ const transition = knobProps.motion.control.transition;
43
43
  observed.push({ height, transition });
44
44
  return (
45
45
  <button data-height={String(height)} data-motion={String(transition)}>
@@ -102,13 +102,13 @@ describe("size token", () => {
102
102
  describe("reduced motion", () => {
103
103
  it("keeps the animation knob's transition when the OS does not prefer reduced motion", () => {
104
104
  const { result } = renderHook(() => useResolvedKnobs());
105
- expect(result.current.knobProps.transition).toBe(defaultKnobs.animation);
105
+ expect(result.current.knobProps.motion.control.transition).toBe(defaultKnobs.animation);
106
106
  });
107
107
 
108
108
  it("forces the transition off when prefers-reduced-motion matches", () => {
109
109
  stubMatchMedia((query) => modernMq(query === "(prefers-reduced-motion: reduce)"));
110
110
  const { result } = renderHook(() => useResolvedKnobs());
111
- expect(result.current.knobProps.transition).toBeUndefined();
111
+ expect(result.current.knobProps.motion.control.transition).toBeUndefined();
112
112
  });
113
113
 
114
114
  it("supports legacy MediaQueryList hosts exposing only addListener", () => {
@@ -116,7 +116,7 @@ describe("reduced motion", () => {
116
116
  const removeListener = vi.fn();
117
117
  stubMatchMedia(() => ({ matches: true, addListener, removeListener }));
118
118
  const { result, unmount } = renderHook(() => useResolvedKnobs());
119
- expect(result.current.knobProps.transition).toBeUndefined();
119
+ expect(result.current.knobProps.motion.control.transition).toBeUndefined();
120
120
  expect(addListener).toHaveBeenCalledWith(expect.any(Function));
121
121
  unmount();
122
122
  expect(removeListener).toHaveBeenCalledWith(expect.any(Function));
@@ -1,58 +1 @@
1
- import { useEffect, useSyncExternalStore } from "react";
2
- import { Appearance } from "react-native";
3
- import { useDidFinishSSR } from "tamagui";
4
- import { isWeb } from "@multiplatform.one/platform";
5
- import { getStoredScheme, setStoredScheme, subscribeStoredScheme } from "./schemeStore";
6
- import type { ThemeScheme } from "./useTheme";
7
-
8
- export interface SchemePreference {
9
- setting: ThemeScheme;
10
- value: "light" | "dark";
11
- set(scheme: ThemeScheme): void;
12
- }
13
- const serverScheme = (): ThemeScheme => "system";
14
-
15
- // RN's Appearance.setColorScheme("unspecified") writes "unspecified" into the
16
- // JS cache that getColorScheme/useColorScheme read, with no change event, so
17
- // System resolved light until the OS flipped (FZ-8708). The native scheme is
18
- // read once before the first override and then only from change events.
19
- let nativeScheme: "light" | "dark" | undefined;
20
- const nativeListeners = new Set<() => void>();
21
-
22
- function getNativeScheme(): "light" | "dark" {
23
- if (nativeScheme === undefined) {
24
- nativeScheme = Appearance.getColorScheme() === "dark" ? "dark" : "light";
25
- Appearance.addChangeListener(({ colorScheme }) => {
26
- if ((colorScheme !== "light" && colorScheme !== "dark") || colorScheme === nativeScheme) {
27
- return;
28
- }
29
- nativeScheme = colorScheme;
30
- nativeListeners.forEach((listener) => listener());
31
- });
32
- }
33
- return nativeScheme;
34
- }
35
-
36
- function subscribeNativeScheme(listener: () => void) {
37
- getNativeScheme();
38
- nativeListeners.add(listener);
39
- return () => {
40
- nativeListeners.delete(listener);
41
- };
42
- }
43
-
44
- export function useSchemePreference(): SchemePreference {
45
- const setting = useSyncExternalStore(subscribeStoredScheme, getStoredScheme, serverScheme);
46
- const os = useSyncExternalStore(subscribeNativeScheme, getNativeScheme, getNativeScheme);
47
- const hydrated = useDidFinishSSR();
48
- useEffect(() => {
49
- if (isWeb) return;
50
- getNativeScheme();
51
- Appearance.setColorScheme(setting === "system" ? "unspecified" : setting);
52
- }, [setting]);
53
- return {
54
- setting: hydrated ? setting : "system",
55
- value: !hydrated ? "light" : setting === "system" ? os : setting,
56
- set: setStoredScheme,
57
- };
58
- }
1
+ export * from "./nativeSchemePreference";
@@ -0,0 +1,84 @@
1
+ export { assertNoPrebuiltThemes, createDefaultThemeConfig, TAMAGUI_ERA, tamaguiEra, } from "./theme/createDefaultThemeConfig";
2
+ export type { CreateDefaultThemeConfigOptions } from "./theme/createDefaultThemeConfig";
3
+ export { createThemesBuilder, houseComponentThemes, houseGrandChildrenThemes, houseTemplates, tintHueNames, } from "./theme/createThemes";
4
+ export type { BaseThemeBuilderDefinition, CreateThemesBuilderOptions, GetThemeProps, Shadows, ThemeBuilderDefinition, } from "./theme/createThemes";
5
+ export { clearPresets, createThemeConfig, getPreset, getPresetNames, registerPreset, resolveThemeFromPreset, } from "./theme/shared";
6
+ export type { ThemeConfig, ThemeConfigScaleOptions } from "./theme/shared";
7
+ export { BodyFont, BorderRadius, BorderWidth, BulkBarPlacement, CornerSmoothing, defaultKnobs, DisabledStyle, Elevation, emptyStateKnobs, FieldLabelPlacement, FillStyle, FontCategory, FontWeight, FormAutofocus, HeadingFont, interactionStates, normalizeAnimationKnob, PageTitleScale, RequiredMarking, SelectAllScope, TableZebra, TextAccent, TimestampStyle, } from "./theme/knobs";
8
+ export type { Animation, InteractionState, Knobs, StateKnobs } from "./theme/knobs";
9
+ export { defaultIntents } from "./theme/intents";
10
+ export type { CardLiftProps, ControlStateProps, CornerSmoothingCarrier, DisabledAssemblyProps, DisabledChromeProps, DisabledRecipe, DisabledSurfaceProps, DisabledTextProps, ElevationChromeProps, ElevationPaintProps, ElevationStateProps, KnobProps, KnobPropsOverride, KnobRecipe, PageTitleFragment, ResolvedKnobs, SelectedRecipe, StateRecipes, TextRoleFragment, TextStateProps, } from "./theme/recipes";
11
+ export { borderRadiusMap, capContainerRadius, capFieldRadius, cardElevationMap, cardLift, containerCapProps, containerRadiusMap, edgeColorAt, elevationMap, getHeadingFontFamily, labelFontSizeFor, nestedControlPx, normalizeSizeToken, overlayElevationMap, paintedCardFill, panelPaddingPx, radiusStopFromToken, railFillRadius, resolveKnobs, resolvePageTitleScale, resolveTextRoles, sizedElevation, sizeKeyBelow, spacingRoles, } from "./theme/resolveKnobs";
12
+ export type { CappedContainer, ColorScheme, ContainerCapDeclaration, ResolveKnobsEnvironment, } from "./theme/resolveKnobs";
13
+ export { applyRadiusStop, applyTouchFloor, cloneSizeRecipeInputs, createRecipeFamilies, DEFAULT_SIZE_RECIPE_INPUTS, defaultRecipeInputs, generateSizeRecipes, generateSizeRecipeTables, getGeneratedSizeRecipes, getSizeRecipeFamily, getSizeRecipeInputs, getTileSizeLadder, mergeRecipeInputs, recipeFamilies, recipeFromTokenChannels, recipeKeyAbove, recipeKeyBelow, resolveControlRadius, resolveSizeRecipeInputs, setSizeRecipeInputs, SIZE_RECIPE_FAMILY_NAMES, SIZE_RECIPE_RADIUS_STOPS, SIZE_RECIPE_RADIUS_TOKEN_TO_STOP, SIZE_RECIPE_TOKENS, SIZE_TOKEN_EXPONENTS, sizeRecipeBoxVariants, sizeRecipeEscape, sizeRecipeForToken, sizeRecipeFromHeight, sizeRecipeIconVariants, sizeRecipes, sizeRecipeTypeVariants, textFieldInset, tileSizeLadder, TOUCH_HEIGHT_FLOOR, } from "./theme/sizeRecipes";
14
+ export type { GeneratedSizeRecipes, RecipeFamilies, SizeRecipe, SizeRecipeBoxVariant, SizeRecipeFamily, SizeRecipeFamilyName, SizeRecipeIconVariant, SizeRecipeInputs, SizeRecipeRadiusStop, SizeRecipeRatios, SizeRecipeTables, SizeRecipeToken, SizeRecipeTokenChannels, SizeRecipeTokenTable, SizeRecipeTypeVariant, } from "./theme/sizeRecipes";
15
+ export { cloneTileSizeInputs, defaultTileSizeInputs, defaultWidthFactors, generateTileSizeLadder, mediaAspectRatios, resolveMediaAspect, resolveTileSizeInputs, tileColumnsForWidth, tileRungFlexProps, tileSizeRungs, tileSizeStepExponents, } from "./theme/tileSizes";
16
+ export type { MediaAspect, MediaAspectName, TileRungFlexProps, TileSizeInputs, TileSizeLadder, TileSizeRung, TileSizeStop, } from "./theme/tileSizes";
17
+ export { PresetContext, usePresetContext, usePresetTints } from "./theme/PresetContext";
18
+ export type { PresetContextValue } from "./theme/PresetContext";
19
+ export { applyColorTheme, Preset } from "./theme/Preset";
20
+ export type { PresetProps } from "./theme/Preset";
21
+ export { clampSurfaceSize, compareSizeTokens, sizeTokenBelow, sizeTokenStep, sizeTokenStop, Surface, SurfaceContext, surfaceSizeRank, useBarSurface, useElevatedSurface, useFieldSurface, } from "./theme/Surface";
22
+ export type { SurfaceIntent, SurfaceSize } from "./theme/Surface";
23
+ export { controlTierDisabled, controlTierPaint, controlTierWash, isDarkThemeName, } from "./theme/controlTiers";
24
+ export type { ControlTier, ControlTierPaint } from "./theme/controlTiers";
25
+ export { AlertDialogContent, AlertDialogOverlay, DialogContent, DialogOverlay, DialogRegionContext, DialogSheetFaceProvider, DialogShowFocus, overlayScrim, PopoverContent, sheetGrabber, sheetGrabberClearance, sheetGrabberZone, useDialogRegionContext, useDialogSheetFace, useIsInDialogRegion, } from "./theme/overlaySurfaces";
26
+ export type { DialogContentProps, DialogRegionContextValue } from "./theme/overlaySurfaces";
27
+ export { boldPreset, consolePreset, defaultPreset, densePreset, heroPreset, roomyPreset, storefrontPreset, } from "./theme/presets";
28
+ export { IntentContext, solidButtonIntents, solidPaletteThemes, useIntentContext, useResolvedKnobs, } from "./theme/useResolvedKnobs";
29
+ export type { UseResolvedKnobsOptions } from "./theme/useResolvedKnobs";
30
+ export { useTheme } from "./theme/useTheme";
31
+ export type { ThemeScheme } from "./theme/useTheme";
32
+ export { createDefaultFont } from "./font";
33
+ export { __resetDevWarnSeen, __resetThemeDevWarnSeen, devWarn, DIALOG_MAX_ACTIONS, themeDevWarn, warnBannedErrorWords, warnBareDisabled, warnCancelDisabled, warnDialogTooManyActions, warnOutlinedIgnored, warnOutlineNone, warnPlaceholderAsLabel, warnPositiveTabIndex, warnSelectTooFewOptions, warnSizeRecipeEscape, warnTooltipOnDisabled, } from "./devWarn";
34
+ export type { DevWarnCode, DevWarnDetail, GuardrailSpecimenParameter } from "./devWarn";
35
+ export { defaultMaxPanes, DETAIL_READABLE_WIDTH, FORM_READABLE_WIDTH, FORM_READABLE_WIDTH_MAX, FORM_READABLE_WIDTH_MIN, getLayoutSizeClass, isTouchSurface, LAYOUT_SIZE_CLASS_ORDER, layoutBreakpoints, layoutSizeClassAtLeast, MIN_PRESS_TARGET, NARROW_BREAKPOINT, OVERLAY_ANCHOR_GAP, OVERLAY_ATTACH_GAP, OVERLAY_BREAKPOINT, pressTargetHitSlop, pressTargetStyle, READING_WIDTH_BODY_FALLBACK, READING_WIDTH_CH, READING_WIDTH_CH_EM, READING_WIDTH_MAX_CH, READING_WIDTH_MIN_CH, readingWidthStyle, useLayoutSizeClass, useMultiPane, useReadingWidthStyle, useSemanticGaps, } from "./theme/layoutTokens";
36
+ export type { HitSlopInsets, LayoutBreakpointName, LayoutSizeClass, PressTargetStyle, ReadingWidthStyle, } from "./theme/layoutTokens";
37
+ export { Intent } from "./theme/Intent";
38
+ export type { IntentProps } from "./theme/Intent";
39
+ export { ensureFocusVisibleRing, FOCUS_RING_CLIPPED_OFFSET, FOCUS_RING_FLUSH_OFFSET, FOCUS_RING_HALO_OFFSET, FOCUS_RING_MIN_CONTRAST, FOCUS_RING_MIN_WIDTH, FOCUS_VISIBLE_RING, FOCUS_VISIBLE_RING_HALO, FOCUS_VISIBLE_RING_INSET, focusRingColorMeetsContrast, isSanctionedFocusRingOffset, SANCTIONED_FOCUS_RING_OFFSETS, STATE_LAYER_HOVER, STATE_LAYER_PRESS, withDefaultStateLayer, } from "./theme/focusState";
40
+ export { FIELD_FOCUS_COLOR, FIELD_FOCUS_REST, FIELD_FOCUS_STYLE, fieldFocusCss, fieldFocusHoldsContrast, } from "./theme/fieldFocus";
41
+ export { ensureHairlineFallback, hairline, hairlineBorderWidth, hairlineFallbackCss, hairlineWidth, } from "./theme/hairline";
42
+ export { compositeFocusRingCss, ensureCompositeFocusRing, ensureKeyboardModalityTracking, focusOnOpen, keyboardFocusRingProps, wasKeyboardFocus, } from "./keyboardFocusRing";
43
+ export { CLOCK_TIME, formatAbsoluteDate, formatAbsoluteDateTime, formatCalendarDate, formatDayLong, formatDayOfMonth, formatMonthYear, formatRelativeTimestamp, formatTimeOfDay, getMonthNames, getWeekdayNames, ISO_DATE_ONLY, parseCalendarDate, } from "./dates";
44
+ export type { AbsoluteDateFormatOptions, CalendarDateShape, DateInput, DayLongFormatOptions, MonthYearFormatOptions, TimeOfDayFormatOptions, WeekdayNamesOptions, } from "./dates";
45
+ export { menuRowChecked, menuRowCheckGlyph, menuRowCheckInk, menuRowFrame, menuRowIconGlyph, resolveMenuRowCheckInk, useMenuRowCheckInk, } from "./menuRow";
46
+ export type { MenuRowGlyph } from "./menuRow";
47
+ export { currencyAffix, formatCurrency, formatNumber, formatPercent, resolveCurrencyCode, } from "./numbers";
48
+ export type { CurrencyAffix, CurrencyFormatOptions, NumberFormatOptions, NumberInput, PercentFormatOptions, } from "./numbers";
49
+ export { radiusClassProps, radiusOverrideFor, radiusResolutionProps, resolveRadiusClass, resolveRadiusForPart, } from "./theme/radiusClass";
50
+ export type { KnobImmuneRadiusClass, RadiusClassDeclaration, RadiusClassGeometry, RadiusResolutionDeclaration, ResolvedPartRadius, ResolvedRadiusSource, ResolveRadiusForPartOptions, } from "./theme/radiusClass";
51
+ export { $color, aaTextContrastRatio, apcaContrast, assertContrast, buttonColors, contrastRatio, fillLabelLc, findReadableStep, holdHueToFloor, holdInkFloor, inputColors, inSwitchOffBand, isLightGround, measureContrast, minContrastRatio, normalizeColorScale, normalizeToHex, pickReadableForeground, plateContrastRatio, relativeLuminance, resolveThemeContrast, semanticGroups, switchOffFillAlpha, switchOffFillBand, systemFillHex, systemFillLuminance, } from "./theme/colorRules";
52
+ export type { ButtonColorConfig, ColorRamp, ColorStep, ComponentColorConfig, ContrastPair, ContrastReport, SemanticGroup, ThemeContrastPair, } from "./theme/colorRules";
53
+ export { getGroupPosition, GroupPositionContext, stackEdgeRadius, stackRadiusProps, useGroupPosition, } from "./theme/groupGeometry";
54
+ export type { GroupOrientation, GroupPosition, StackRadiusFragment } from "./theme/groupGeometry";
55
+ export { resolveAccentOnSurface, resolveAccentTintedSurface, resolveActiveTabInk, resolveIdentityInk, resolveLegibleInkOn, useAccentOnSurface, useAccentTintedSurface, useActiveTabInk, useIdentityHue, useIdentityInkOnSurface, useLegibleInkOn, useReadableTextOn, } from "./theme/readableColor";
56
+ export type { ResolveAccentTintedSurfaceInput, ResolveActiveTabInkInput, } from "./theme/readableColor";
57
+ export { accentIdentityCandidates, resolveChartPalette, useChartPalette, } from "./theme/chartPalette";
58
+ export type { ChartPalette, ResolveChartPaletteInput } from "./theme/chartPalette";
59
+ export { animationConfig, animationDurations, animationNames, animations, animationConfig as cssAnimationConfig, motionStops, } from "./theme/animations/css";
60
+ export type { AnimationName, MotionStop } from "./theme/animations/css";
61
+ export { motionDurationMs, motionExitFactor, motionFor, motionHideDelayMs, motionRoleProperties, motionSeconds, motionSettleMs, } from "./theme/motion";
62
+ export type { MotionRole, MotionRoleName } from "./theme/motion";
63
+ export { resolveGlyphPaint, useGlyphColor } from "./theme/glyphPaint";
64
+ export { GLYPH_CONTRAST_FLOOR, glyphTintFallback, GlyphTintFallbackProvider, platformSystemTint, resolveGlyphTint, useGlyphTintOnSurface, } from "./theme/glyphTint";
65
+ export type { GlyphTintFallback, ResolveGlyphTintInput } from "./theme/glyphTint";
66
+ export { IconSlot } from "./theme/IconSlot";
67
+ export type { IconSlotValue } from "./theme/IconSlot";
68
+ export { transitionProps } from "./theme/transitionProps";
69
+ export { Anchor, Paragraph, SizableText, Text } from "./theme/Text";
70
+ export type { AnchorProps, ParagraphProps, SizableTextProps, TextProps } from "./theme/Text";
71
+ export { H1, H2, H3, H4, H5, H6, Heading } from "./theme/Heading";
72
+ export type { HeadingProps } from "./theme/Heading";
73
+ export { negateSpaceToken, PageGutter, ScreenNesting, usePageGutter, useParentScreen, usePhoneTableBleed, } from "./theme/pageGutter";
74
+ export type { PageGutterProps, ParentScreen, PhoneTableBleed } from "./theme/pageGutter";
75
+ export { dynamicTypeFit, effectiveFontScale, headingMaxFontScale, maxFontScaleToFit, } from "./theme/dynamicType";
76
+ export { animationConfig as nativeAnimationConfig } from "./theme/animations/reactNative";
77
+ export { getActiveScaleTokens, scaleRadiusPx, scaleSpaceFractionPx, setActiveScaleTokens, } from "./theme/scale/activeScale";
78
+ export type { IntentOverride, Preset as PresetDefinition } from "./theme/preset.types";
79
+ export type { ThemeSubset } from "./theme/subsetThemes";
80
+ export type { SizeKey } from "./theme/scale/scaleInputs";
81
+ export { listHeightForRows } from "./theme/listRows";
82
+ export { useTouchSurface } from "./theme/useTouchSurface";
83
+ export type { GenericFonts, MediaQueryKey, ThemeName } from "@tamagui/web";
84
+ //# sourceMappingURL=index.gnome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.gnome.d.ts","sourceRoot":"","sources":["../src/index.gnome.ts"],"names":[],"mappings":"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"}