@multiplatform.one/theme 7.83.1 → 7.84.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 (853) hide show
  1. package/dist/cjs/audit/constraintAudit.cjs +567 -0
  2. package/dist/cjs/audit/constraintAudit.native.js +948 -0
  3. package/dist/cjs/audit/constraintAudit.native.js.map +1 -0
  4. package/dist/cjs/audit/designTokens.cjs +53 -0
  5. package/dist/cjs/audit/designTokens.native.js +80 -0
  6. package/dist/cjs/audit/designTokens.native.js.map +1 -0
  7. package/dist/cjs/audit/diffReport.cjs +255 -0
  8. package/dist/cjs/audit/diffReport.native.js +519 -0
  9. package/dist/cjs/audit/diffReport.native.js.map +1 -0
  10. package/dist/cjs/audit/index.cjs +41 -0
  11. package/dist/cjs/audit/index.native.js +44 -0
  12. package/dist/cjs/audit/index.native.js.map +1 -0
  13. package/dist/cjs/audit/themeMatrix.cjs +924 -0
  14. package/dist/cjs/audit/themeMatrix.native.js +1552 -0
  15. package/dist/cjs/audit/themeMatrix.native.js.map +1 -0
  16. package/dist/cjs/dates.cjs +261 -0
  17. package/dist/cjs/dates.native.js +289 -0
  18. package/dist/cjs/dates.native.js.map +1 -0
  19. package/dist/cjs/devWarn.cjs +163 -0
  20. package/dist/cjs/devWarn.native.js +191 -0
  21. package/dist/cjs/devWarn.native.js.map +1 -0
  22. package/dist/cjs/expo.cjs +89 -0
  23. package/dist/cjs/expo.native.js +97 -0
  24. package/dist/cjs/expo.native.js.map +1 -0
  25. package/dist/cjs/figma/figmaTokens.cjs +350 -0
  26. package/dist/cjs/figma/figmaTokens.native.js +637 -0
  27. package/dist/cjs/figma/figmaTokens.native.js.map +1 -0
  28. package/dist/cjs/font.cjs +65 -0
  29. package/dist/cjs/font.native.js +74 -0
  30. package/dist/cjs/font.native.js.map +1 -0
  31. package/dist/cjs/fonts/createFontLoader.cjs +32 -0
  32. package/dist/cjs/fonts/createFontLoader.native.js +70 -0
  33. package/dist/cjs/fonts/createFontLoader.native.js.map +1 -0
  34. package/dist/cjs/fonts/index.cjs +22 -0
  35. package/dist/cjs/fonts/index.native.js +25 -0
  36. package/dist/cjs/fonts/index.native.js.map +1 -0
  37. package/dist/cjs/fonts/interFaces.cjs +38 -0
  38. package/dist/cjs/fonts/interFaces.native.js +41 -0
  39. package/dist/cjs/fonts/interFaces.native.js.map +1 -0
  40. package/dist/cjs/fonts/types.cjs +18 -0
  41. package/dist/cjs/fonts/types.native.js +21 -0
  42. package/dist/cjs/fonts/types.native.js.map +1 -0
  43. package/dist/cjs/index.cjs +39 -0
  44. package/dist/cjs/index.native.js +42 -0
  45. package/dist/cjs/index.native.js.map +1 -0
  46. package/dist/cjs/keyboardFocusRing.cjs +111 -0
  47. package/dist/cjs/keyboardFocusRing.native.js +116 -0
  48. package/dist/cjs/keyboardFocusRing.native.js.map +1 -0
  49. package/dist/cjs/menuRow.cjs +80 -0
  50. package/dist/cjs/menuRow.native.js +86 -0
  51. package/dist/cjs/menuRow.native.js.map +1 -0
  52. package/dist/cjs/numbers.cjs +161 -0
  53. package/dist/cjs/numbers.native.js +173 -0
  54. package/dist/cjs/numbers.native.js.map +1 -0
  55. package/dist/cjs/theme/FontKnobStyles.cjs +161 -0
  56. package/dist/cjs/theme/FontKnobStyles.native.js +41 -0
  57. package/dist/cjs/theme/FontKnobStyles.native.js.map +1 -0
  58. package/dist/cjs/theme/Heading.cjs +174 -0
  59. package/dist/cjs/theme/Heading.native.js +186 -0
  60. package/dist/cjs/theme/Heading.native.js.map +1 -0
  61. package/dist/cjs/theme/IconSlot.cjs +67 -0
  62. package/dist/cjs/theme/IconSlot.native.js +78 -0
  63. package/dist/cjs/theme/IconSlot.native.js.map +1 -0
  64. package/dist/cjs/theme/Intent.cjs +44 -0
  65. package/dist/cjs/theme/Intent.native.js +48 -0
  66. package/dist/cjs/theme/Intent.native.js.map +1 -0
  67. package/dist/cjs/theme/Preset.cjs +150 -0
  68. package/dist/cjs/theme/Preset.native.js +156 -0
  69. package/dist/cjs/theme/Preset.native.js.map +1 -0
  70. package/dist/cjs/theme/PresetContext.cjs +38 -0
  71. package/dist/cjs/theme/PresetContext.native.js +42 -0
  72. package/dist/cjs/theme/PresetContext.native.js.map +1 -0
  73. package/dist/cjs/theme/Surface.cjs +115 -0
  74. package/dist/cjs/theme/Surface.native.js +126 -0
  75. package/dist/cjs/theme/Surface.native.js.map +1 -0
  76. package/dist/cjs/theme/Text.cjs +147 -0
  77. package/dist/cjs/theme/Text.native.js +155 -0
  78. package/dist/cjs/theme/Text.native.js.map +1 -0
  79. package/dist/cjs/theme/Tint.cjs +55 -0
  80. package/dist/cjs/theme/Tint.native.js +59 -0
  81. package/dist/cjs/theme/Tint.native.js.map +1 -0
  82. package/dist/cjs/theme/activateThemeConfig.cjs +42 -0
  83. package/dist/cjs/theme/activateThemeConfig.native.js +45 -0
  84. package/dist/cjs/theme/activateThemeConfig.native.js.map +1 -0
  85. package/dist/cjs/theme/animations/css.cjs +36 -0
  86. package/dist/cjs/theme/animations/css.native.js +39 -0
  87. package/dist/cjs/theme/animations/css.native.js.map +1 -0
  88. package/dist/cjs/theme/animations/index.cjs +20 -0
  89. package/dist/cjs/theme/animations/index.native.js +23 -0
  90. package/dist/cjs/theme/animations/index.native.js.map +1 -0
  91. package/dist/cjs/theme/animations/reactNative.cjs +158 -0
  92. package/dist/cjs/theme/animations/reactNative.native.js +161 -0
  93. package/dist/cjs/theme/animations/reactNative.native.js.map +1 -0
  94. package/dist/cjs/theme/chartPalette.cjs +229 -0
  95. package/dist/cjs/theme/chartPalette.native.js +297 -0
  96. package/dist/cjs/theme/chartPalette.native.js.map +1 -0
  97. package/dist/cjs/theme/colorRules.cjs +323 -0
  98. package/dist/cjs/theme/colorRules.native.js +359 -0
  99. package/dist/cjs/theme/colorRules.native.js.map +1 -0
  100. package/dist/cjs/theme/controlTiers.cjs +67 -0
  101. package/dist/cjs/theme/controlTiers.native.js +72 -0
  102. package/dist/cjs/theme/controlTiers.native.js.map +1 -0
  103. package/dist/cjs/theme/cookies.cjs +183 -0
  104. package/dist/cjs/theme/cookies.native.js +309 -0
  105. package/dist/cjs/theme/cookies.native.js.map +1 -0
  106. package/dist/cjs/theme/cornerSmoothing.cjs +111 -0
  107. package/dist/cjs/theme/cornerSmoothing.native.js +71 -0
  108. package/dist/cjs/theme/cornerSmoothing.native.js.map +1 -0
  109. package/dist/cjs/theme/createDefaultThemeConfig.cjs +130 -0
  110. package/dist/cjs/theme/createDefaultThemeConfig.native.js +176 -0
  111. package/dist/cjs/theme/createDefaultThemeConfig.native.js.map +1 -0
  112. package/dist/cjs/theme/createThemes.cjs +737 -0
  113. package/dist/cjs/theme/createThemes.native.js +1183 -0
  114. package/dist/cjs/theme/createThemes.native.js.map +1 -0
  115. package/dist/cjs/theme/dedupeInherited.cjs +83 -0
  116. package/dist/cjs/theme/dedupeInherited.native.js +194 -0
  117. package/dist/cjs/theme/dedupeInherited.native.js.map +1 -0
  118. package/dist/cjs/theme/defaults/accent.cjs +32 -0
  119. package/dist/cjs/theme/defaults/accent.native.js +35 -0
  120. package/dist/cjs/theme/defaults/accent.native.js.map +1 -0
  121. package/dist/cjs/theme/defaults/base.cjs +48 -0
  122. package/dist/cjs/theme/defaults/base.native.js +51 -0
  123. package/dist/cjs/theme/defaults/base.native.js.map +1 -0
  124. package/dist/cjs/theme/defaults/builderOptions.cjs +192 -0
  125. package/dist/cjs/theme/defaults/builderOptions.native.js +263 -0
  126. package/dist/cjs/theme/defaults/builderOptions.native.js.map +1 -0
  127. package/dist/cjs/theme/defaults/categoryFonts.cjs +50 -0
  128. package/dist/cjs/theme/defaults/categoryFonts.native.js +53 -0
  129. package/dist/cjs/theme/defaults/categoryFonts.native.js.map +1 -0
  130. package/dist/cjs/theme/defaults/fonts.cjs +288 -0
  131. package/dist/cjs/theme/defaults/fonts.native.js +380 -0
  132. package/dist/cjs/theme/defaults/fonts.native.js.map +1 -0
  133. package/dist/cjs/theme/defaults/house.cjs +39 -0
  134. package/dist/cjs/theme/defaults/house.native.js +46 -0
  135. package/dist/cjs/theme/defaults/house.native.js.map +1 -0
  136. package/dist/cjs/theme/defaults/index.cjs +25 -0
  137. package/dist/cjs/theme/defaults/index.native.js +28 -0
  138. package/dist/cjs/theme/defaults/index.native.js.map +1 -0
  139. package/dist/cjs/theme/devtools/ColorLineVisualizer.cjs +243 -0
  140. package/dist/cjs/theme/devtools/ColorLineVisualizer.native.js +269 -0
  141. package/dist/cjs/theme/devtools/ColorLineVisualizer.native.js.map +1 -0
  142. package/dist/cjs/theme/devtools/ThemeDevtoolsPanel.cjs +1350 -0
  143. package/dist/cjs/theme/devtools/ThemeDevtoolsPanel.native.js +1814 -0
  144. package/dist/cjs/theme/devtools/ThemeDevtoolsPanel.native.js.map +1 -0
  145. package/dist/cjs/theme/devtools/animationOptions.cjs +36 -0
  146. package/dist/cjs/theme/devtools/animationOptions.native.js +46 -0
  147. package/dist/cjs/theme/devtools/animationOptions.native.js.map +1 -0
  148. package/dist/cjs/theme/devtools/buildSnapshot.cjs +92 -0
  149. package/dist/cjs/theme/devtools/buildSnapshot.native.js +174 -0
  150. package/dist/cjs/theme/devtools/buildSnapshot.native.js.map +1 -0
  151. package/dist/cjs/theme/devtools/knobIcons.cjs +498 -0
  152. package/dist/cjs/theme/devtools/knobIcons.native.js +520 -0
  153. package/dist/cjs/theme/devtools/knobIcons.native.js.map +1 -0
  154. package/dist/cjs/theme/devtools/vizConstants.cjs +54 -0
  155. package/dist/cjs/theme/devtools/vizConstants.native.js +57 -0
  156. package/dist/cjs/theme/devtools/vizConstants.native.js.map +1 -0
  157. package/dist/cjs/theme/dynamicType.cjs +52 -0
  158. package/dist/cjs/theme/dynamicType.native.js +55 -0
  159. package/dist/cjs/theme/dynamicType.native.js.map +1 -0
  160. package/dist/cjs/theme/fieldFocus.cjs +56 -0
  161. package/dist/cjs/theme/fieldFocus.native.js +62 -0
  162. package/dist/cjs/theme/fieldFocus.native.js.map +1 -0
  163. package/dist/cjs/theme/fillContrast.cjs +130 -0
  164. package/dist/cjs/theme/fillContrast.native.js +163 -0
  165. package/dist/cjs/theme/fillContrast.native.js.map +1 -0
  166. package/dist/cjs/theme/focusState.cjs +120 -0
  167. package/dist/cjs/theme/focusState.native.js +123 -0
  168. package/dist/cjs/theme/focusState.native.js.map +1 -0
  169. package/dist/cjs/theme/fontCategoryMetrics.cjs +91 -0
  170. package/dist/cjs/theme/fontCategoryMetrics.native.js +94 -0
  171. package/dist/cjs/theme/fontCategoryMetrics.native.js.map +1 -0
  172. package/dist/cjs/theme/fontCategoryStacks.cjs +40 -0
  173. package/dist/cjs/theme/fontCategoryStacks.native.js +43 -0
  174. package/dist/cjs/theme/fontCategoryStacks.native.js.map +1 -0
  175. package/dist/cjs/theme/glyphPaint.cjs +55 -0
  176. package/dist/cjs/theme/glyphPaint.native.js +81 -0
  177. package/dist/cjs/theme/glyphPaint.native.js.map +1 -0
  178. package/dist/cjs/theme/glyphTint.cjs +90 -0
  179. package/dist/cjs/theme/glyphTint.native.js +96 -0
  180. package/dist/cjs/theme/glyphTint.native.js.map +1 -0
  181. package/dist/cjs/theme/groupGeometry.cjs +67 -0
  182. package/dist/cjs/theme/groupGeometry.native.js +72 -0
  183. package/dist/cjs/theme/groupGeometry.native.js.map +1 -0
  184. package/dist/cjs/theme/hairline.cjs +119 -0
  185. package/dist/cjs/theme/hairline.native.js +73 -0
  186. package/dist/cjs/theme/hairline.native.js.map +1 -0
  187. package/dist/cjs/theme/index.cjs +95 -0
  188. package/dist/cjs/theme/index.native.js +98 -0
  189. package/dist/cjs/theme/index.native.js.map +1 -0
  190. package/dist/cjs/theme/intents.cjs +62 -0
  191. package/dist/cjs/theme/intents.native.js +65 -0
  192. package/dist/cjs/theme/intents.native.js.map +1 -0
  193. package/dist/cjs/theme/knobs.cjs +172 -0
  194. package/dist/cjs/theme/knobs.native.js +175 -0
  195. package/dist/cjs/theme/knobs.native.js.map +1 -0
  196. package/dist/cjs/theme/layoutTokens.cjs +172 -0
  197. package/dist/cjs/theme/layoutTokens.native.js +222 -0
  198. package/dist/cjs/theme/layoutTokens.native.js.map +1 -0
  199. package/dist/cjs/theme/listRows.cjs +44 -0
  200. package/dist/cjs/theme/listRows.native.js +49 -0
  201. package/dist/cjs/theme/listRows.native.js.map +1 -0
  202. package/dist/cjs/theme/mergedTokens.cjs +39 -0
  203. package/dist/cjs/theme/mergedTokens.native.js +61 -0
  204. package/dist/cjs/theme/mergedTokens.native.js.map +1 -0
  205. package/dist/cjs/theme/motion.cjs +72 -0
  206. package/dist/cjs/theme/motion.native.js +82 -0
  207. package/dist/cjs/theme/motion.native.js.map +1 -0
  208. package/dist/cjs/theme/motionStops.cjs +28 -0
  209. package/dist/cjs/theme/motionStops.native.js +31 -0
  210. package/dist/cjs/theme/motionStops.native.js.map +1 -0
  211. package/dist/cjs/theme/motionTiming.cjs +79 -0
  212. package/dist/cjs/theme/motionTiming.native.js +85 -0
  213. package/dist/cjs/theme/motionTiming.native.js.map +1 -0
  214. package/dist/cjs/theme/nativeFontFamily.cjs +30 -0
  215. package/dist/cjs/theme/nativeFontFamily.native.js +37 -0
  216. package/dist/cjs/theme/nativeFontFamily.native.js.map +1 -0
  217. package/dist/cjs/theme/nativeMonoFamily.cjs +44 -0
  218. package/dist/cjs/theme/nativeMonoFamily.native.js +47 -0
  219. package/dist/cjs/theme/nativeMonoFamily.native.js.map +1 -0
  220. package/dist/cjs/theme/overlaySurfaces.cjs +327 -0
  221. package/dist/cjs/theme/overlaySurfaces.native.js +351 -0
  222. package/dist/cjs/theme/overlaySurfaces.native.js.map +1 -0
  223. package/dist/cjs/theme/pageGutter.cjs +85 -0
  224. package/dist/cjs/theme/pageGutter.native.js +92 -0
  225. package/dist/cjs/theme/pageGutter.native.js.map +1 -0
  226. package/dist/cjs/theme/preset.types.cjs +18 -0
  227. package/dist/cjs/theme/preset.types.native.js +21 -0
  228. package/dist/cjs/theme/preset.types.native.js.map +1 -0
  229. package/dist/cjs/theme/presetPreview.cjs +42 -0
  230. package/dist/cjs/theme/presetPreview.native.js +46 -0
  231. package/dist/cjs/theme/presetPreview.native.js.map +1 -0
  232. package/dist/cjs/theme/presetStore.cjs +288 -0
  233. package/dist/cjs/theme/presetStore.native.js +344 -0
  234. package/dist/cjs/theme/presetStore.native.js.map +1 -0
  235. package/dist/cjs/theme/presetUserSync.cjs +70 -0
  236. package/dist/cjs/theme/presetUserSync.native.js +75 -0
  237. package/dist/cjs/theme/presetUserSync.native.js.map +1 -0
  238. package/dist/cjs/theme/presets.cjs +128 -0
  239. package/dist/cjs/theme/presets.native.js +131 -0
  240. package/dist/cjs/theme/presets.native.js.map +1 -0
  241. package/dist/cjs/theme/radiusClass.cjs +128 -0
  242. package/dist/cjs/theme/radiusClass.native.js +137 -0
  243. package/dist/cjs/theme/radiusClass.native.js.map +1 -0
  244. package/dist/cjs/theme/radiusClassTable.generated.cjs +164 -0
  245. package/dist/cjs/theme/radiusClassTable.generated.native.js +167 -0
  246. package/dist/cjs/theme/radiusClassTable.generated.native.js.map +1 -0
  247. package/dist/cjs/theme/ramps.cjs +75 -0
  248. package/dist/cjs/theme/ramps.native.js +79 -0
  249. package/dist/cjs/theme/ramps.native.js.map +1 -0
  250. package/dist/cjs/theme/readableColor.cjs +284 -0
  251. package/dist/cjs/theme/readableColor.native.js +393 -0
  252. package/dist/cjs/theme/readableColor.native.js.map +1 -0
  253. package/dist/cjs/theme/recipeInputs.cjs +352 -0
  254. package/dist/cjs/theme/recipeInputs.native.js +470 -0
  255. package/dist/cjs/theme/recipeInputs.native.js.map +1 -0
  256. package/dist/cjs/theme/recipes.cjs +18 -0
  257. package/dist/cjs/theme/recipes.native.js +21 -0
  258. package/dist/cjs/theme/recipes.native.js.map +1 -0
  259. package/dist/cjs/theme/resolveKnobs.cjs +866 -0
  260. package/dist/cjs/theme/resolveKnobs.native.js +884 -0
  261. package/dist/cjs/theme/resolveKnobs.native.js.map +1 -0
  262. package/dist/cjs/theme/scale/ScaleStyles.cjs +57 -0
  263. package/dist/cjs/theme/scale/ScaleStyles.native.js +41 -0
  264. package/dist/cjs/theme/scale/ScaleStyles.native.js.map +1 -0
  265. package/dist/cjs/theme/scale/activeScale.cjs +56 -0
  266. package/dist/cjs/theme/scale/activeScale.native.js +84 -0
  267. package/dist/cjs/theme/scale/activeScale.native.js.map +1 -0
  268. package/dist/cjs/theme/scale/deriveRecipeInputs.cjs +111 -0
  269. package/dist/cjs/theme/scale/deriveRecipeInputs.native.js +154 -0
  270. package/dist/cjs/theme/scale/deriveRecipeInputs.native.js.map +1 -0
  271. package/dist/cjs/theme/scale/generateScale.cjs +114 -0
  272. package/dist/cjs/theme/scale/generateScale.native.js +200 -0
  273. package/dist/cjs/theme/scale/generateScale.native.js.map +1 -0
  274. package/dist/cjs/theme/scale/index.cjs +78 -0
  275. package/dist/cjs/theme/scale/index.native.js +81 -0
  276. package/dist/cjs/theme/scale/index.native.js.map +1 -0
  277. package/dist/cjs/theme/scale/installScaleConfig.cjs +31 -0
  278. package/dist/cjs/theme/scale/installScaleConfig.native.js +65 -0
  279. package/dist/cjs/theme/scale/installScaleConfig.native.js.map +1 -0
  280. package/dist/cjs/theme/scale/scaleAttribute.cjs +39 -0
  281. package/dist/cjs/theme/scale/scaleAttribute.native.js +42 -0
  282. package/dist/cjs/theme/scale/scaleAttribute.native.js.map +1 -0
  283. package/dist/cjs/theme/scale/scaleCss.cjs +89 -0
  284. package/dist/cjs/theme/scale/scaleCss.native.js +201 -0
  285. package/dist/cjs/theme/scale/scaleCss.native.js.map +1 -0
  286. package/dist/cjs/theme/scale/scaleFonts.cjs +86 -0
  287. package/dist/cjs/theme/scale/scaleFonts.native.js +155 -0
  288. package/dist/cjs/theme/scale/scaleFonts.native.js.map +1 -0
  289. package/dist/cjs/theme/scale/scaleInputs.cjs +232 -0
  290. package/dist/cjs/theme/scale/scaleInputs.native.js +237 -0
  291. package/dist/cjs/theme/scale/scaleInputs.native.js.map +1 -0
  292. package/dist/cjs/theme/scale/themeScales.cjs +136 -0
  293. package/dist/cjs/theme/scale/themeScales.native.js +185 -0
  294. package/dist/cjs/theme/scale/themeScales.native.js.map +1 -0
  295. package/dist/cjs/theme/scale/useActiveScale.cjs +78 -0
  296. package/dist/cjs/theme/scale/useActiveScale.native.js +87 -0
  297. package/dist/cjs/theme/scale/useActiveScale.native.js.map +1 -0
  298. package/dist/cjs/theme/schemeStore.cjs +87 -0
  299. package/dist/cjs/theme/schemeStore.native.js +104 -0
  300. package/dist/cjs/theme/schemeStore.native.js.map +1 -0
  301. package/dist/cjs/theme/shared.cjs +125 -0
  302. package/dist/cjs/theme/shared.native.js +168 -0
  303. package/dist/cjs/theme/shared.native.js.map +1 -0
  304. package/dist/cjs/theme/sizeRecipes.cjs +176 -0
  305. package/dist/cjs/theme/sizeRecipes.native.js +251 -0
  306. package/dist/cjs/theme/sizeRecipes.native.js.map +1 -0
  307. package/dist/cjs/theme/subsetThemes.cjs +46 -0
  308. package/dist/cjs/theme/subsetThemes.native.js +76 -0
  309. package/dist/cjs/theme/subsetThemes.native.js.map +1 -0
  310. package/dist/cjs/theme/theme.cjs +189 -0
  311. package/dist/cjs/theme/theme.native.js +115 -0
  312. package/dist/cjs/theme/theme.native.js.map +1 -0
  313. package/dist/cjs/theme/themeValue.cjs +51 -0
  314. package/dist/cjs/theme/themeValue.native.js +73 -0
  315. package/dist/cjs/theme/themeValue.native.js.map +1 -0
  316. package/dist/cjs/theme/tileSizes.cjs +202 -0
  317. package/dist/cjs/theme/tileSizes.native.js +230 -0
  318. package/dist/cjs/theme/tileSizes.native.js.map +1 -0
  319. package/dist/cjs/theme/touchManipulation.cjs +33 -0
  320. package/dist/cjs/theme/touchManipulation.native.js +36 -0
  321. package/dist/cjs/theme/touchManipulation.native.js.map +1 -0
  322. package/dist/cjs/theme/transitionProps.cjs +50 -0
  323. package/dist/cjs/theme/transitionProps.native.js +81 -0
  324. package/dist/cjs/theme/transitionProps.native.js.map +1 -0
  325. package/dist/cjs/theme/useColorScale.cjs +47 -0
  326. package/dist/cjs/theme/useColorScale.native.js +33 -0
  327. package/dist/cjs/theme/useColorScale.native.js.map +1 -0
  328. package/dist/cjs/theme/usePresetSwitch.cjs +70 -0
  329. package/dist/cjs/theme/usePresetSwitch.native.js +50 -0
  330. package/dist/cjs/theme/usePresetSwitch.native.js.map +1 -0
  331. package/dist/cjs/theme/useResolvedKnobs.cjs +140 -0
  332. package/dist/cjs/theme/useResolvedKnobs.native.js +177 -0
  333. package/dist/cjs/theme/useResolvedKnobs.native.js.map +1 -0
  334. package/dist/cjs/theme/useSchemePreference.cjs +49 -0
  335. package/dist/cjs/theme/useSchemePreference.native.js +80 -0
  336. package/dist/cjs/theme/useSchemePreference.native.js.map +1 -0
  337. package/dist/cjs/theme/useTheme.cjs +152 -0
  338. package/dist/cjs/theme/useTheme.native.js +94 -0
  339. package/dist/cjs/theme/useTheme.native.js.map +1 -0
  340. package/dist/cjs/theme/useTouchSurface.cjs +33 -0
  341. package/dist/cjs/theme/useTouchSurface.native.js +36 -0
  342. package/dist/cjs/theme/useTouchSurface.native.js.map +1 -0
  343. package/dist/cjs/theme/v3TokenRoles.cjs +64 -0
  344. package/dist/cjs/theme/v3TokenRoles.native.js +67 -0
  345. package/dist/cjs/theme/v3TokenRoles.native.js.map +1 -0
  346. package/dist/esm/audit/constraintAudit.mjs +540 -0
  347. package/dist/esm/audit/constraintAudit.mjs.map +1 -0
  348. package/dist/esm/audit/constraintAudit.native.js +918 -0
  349. package/dist/esm/audit/constraintAudit.native.js.map +1 -0
  350. package/dist/esm/audit/designTokens.mjs +28 -0
  351. package/dist/esm/audit/designTokens.mjs.map +1 -0
  352. package/dist/esm/audit/designTokens.native.js +52 -0
  353. package/dist/esm/audit/designTokens.native.js.map +1 -0
  354. package/dist/esm/audit/diffReport.mjs +229 -0
  355. package/dist/esm/audit/diffReport.mjs.map +1 -0
  356. package/dist/esm/audit/diffReport.native.js +490 -0
  357. package/dist/esm/audit/diffReport.native.js.map +1 -0
  358. package/dist/esm/audit/index.mjs +5 -0
  359. package/dist/esm/audit/index.mjs.map +1 -0
  360. package/dist/esm/audit/index.native.js +5 -0
  361. package/dist/esm/audit/index.native.js.map +1 -0
  362. package/dist/esm/audit/themeMatrix.mjs +890 -0
  363. package/dist/esm/audit/themeMatrix.mjs.map +1 -0
  364. package/dist/esm/audit/themeMatrix.native.js +1515 -0
  365. package/dist/esm/audit/themeMatrix.native.js.map +1 -0
  366. package/dist/esm/dates.mjs +224 -0
  367. package/dist/esm/dates.mjs.map +1 -0
  368. package/dist/esm/dates.native.js +249 -0
  369. package/dist/esm/dates.native.js.map +1 -0
  370. package/dist/esm/devWarn.mjs +123 -0
  371. package/dist/esm/devWarn.mjs.map +1 -0
  372. package/dist/esm/devWarn.native.js +148 -0
  373. package/dist/esm/devWarn.native.js.map +1 -0
  374. package/dist/esm/expo.mjs +59 -0
  375. package/dist/esm/expo.mjs.map +1 -0
  376. package/dist/esm/expo.native.js +64 -0
  377. package/dist/esm/expo.native.js.map +1 -0
  378. package/dist/esm/figma/figmaTokens.mjs +322 -0
  379. package/dist/esm/figma/figmaTokens.mjs.map +1 -0
  380. package/dist/esm/figma/figmaTokens.native.js +606 -0
  381. package/dist/esm/figma/figmaTokens.native.js.map +1 -0
  382. package/dist/esm/font.mjs +40 -0
  383. package/dist/esm/font.mjs.map +1 -0
  384. package/dist/esm/font.native.js +46 -0
  385. package/dist/esm/font.native.js.map +1 -0
  386. package/dist/esm/fonts/createFontLoader.mjs +7 -0
  387. package/dist/esm/fonts/createFontLoader.mjs.map +1 -0
  388. package/dist/esm/fonts/createFontLoader.native.js +42 -0
  389. package/dist/esm/fonts/createFontLoader.native.js.map +1 -0
  390. package/dist/esm/fonts/index.mjs +4 -0
  391. package/dist/esm/fonts/index.mjs.map +1 -0
  392. package/dist/esm/fonts/index.native.js +4 -0
  393. package/dist/esm/fonts/index.native.js.map +1 -0
  394. package/dist/esm/fonts/interFaces.mjs +12 -0
  395. package/dist/esm/fonts/interFaces.mjs.map +1 -0
  396. package/dist/esm/fonts/interFaces.native.js +12 -0
  397. package/dist/esm/fonts/interFaces.native.js.map +1 -0
  398. package/dist/esm/fonts/types.mjs +2 -0
  399. package/dist/esm/fonts/types.mjs.map +1 -0
  400. package/dist/esm/fonts/types.native.js +2 -0
  401. package/dist/esm/fonts/types.native.js.map +1 -0
  402. package/dist/esm/index.mjs +11 -0
  403. package/dist/esm/index.mjs.map +1 -0
  404. package/dist/esm/index.native.js +11 -0
  405. package/dist/esm/index.native.js.map +1 -0
  406. package/dist/esm/keyboardFocusRing.mjs +81 -0
  407. package/dist/esm/keyboardFocusRing.mjs.map +1 -0
  408. package/dist/esm/keyboardFocusRing.native.js +83 -0
  409. package/dist/esm/keyboardFocusRing.native.js.map +1 -0
  410. package/dist/esm/menuRow.mjs +49 -0
  411. package/dist/esm/menuRow.mjs.map +1 -0
  412. package/dist/esm/menuRow.native.js +52 -0
  413. package/dist/esm/menuRow.native.js.map +1 -0
  414. package/dist/esm/numbers.mjs +132 -0
  415. package/dist/esm/numbers.mjs.map +1 -0
  416. package/dist/esm/numbers.native.js +141 -0
  417. package/dist/esm/numbers.native.js.map +1 -0
  418. package/dist/esm/theme/FontKnobStyles.mjs +131 -0
  419. package/dist/esm/theme/FontKnobStyles.mjs.map +1 -0
  420. package/dist/esm/theme/FontKnobStyles.native.js +11 -0
  421. package/dist/esm/theme/FontKnobStyles.native.js.map +1 -0
  422. package/dist/esm/theme/Heading.mjs +143 -0
  423. package/dist/esm/theme/Heading.mjs.map +1 -0
  424. package/dist/esm/theme/Heading.native.js +152 -0
  425. package/dist/esm/theme/Heading.native.js.map +1 -0
  426. package/dist/esm/theme/IconSlot.mjs +42 -0
  427. package/dist/esm/theme/IconSlot.mjs.map +1 -0
  428. package/dist/esm/theme/IconSlot.native.js +50 -0
  429. package/dist/esm/theme/IconSlot.native.js.map +1 -0
  430. package/dist/esm/theme/Intent.mjs +19 -0
  431. package/dist/esm/theme/Intent.mjs.map +1 -0
  432. package/dist/esm/theme/Intent.native.js +20 -0
  433. package/dist/esm/theme/Intent.native.js.map +1 -0
  434. package/dist/esm/theme/Preset.mjs +124 -0
  435. package/dist/esm/theme/Preset.mjs.map +1 -0
  436. package/dist/esm/theme/Preset.native.js +127 -0
  437. package/dist/esm/theme/Preset.native.js.map +1 -0
  438. package/dist/esm/theme/PresetContext.mjs +11 -0
  439. package/dist/esm/theme/PresetContext.mjs.map +1 -0
  440. package/dist/esm/theme/PresetContext.native.js +12 -0
  441. package/dist/esm/theme/PresetContext.native.js.map +1 -0
  442. package/dist/esm/theme/Surface.mjs +80 -0
  443. package/dist/esm/theme/Surface.mjs.map +1 -0
  444. package/dist/esm/theme/Surface.native.js +88 -0
  445. package/dist/esm/theme/Surface.native.js.map +1 -0
  446. package/dist/esm/theme/Text.mjs +119 -0
  447. package/dist/esm/theme/Text.mjs.map +1 -0
  448. package/dist/esm/theme/Text.native.js +124 -0
  449. package/dist/esm/theme/Text.native.js.map +1 -0
  450. package/dist/esm/theme/Tint.mjs +29 -0
  451. package/dist/esm/theme/Tint.mjs.map +1 -0
  452. package/dist/esm/theme/Tint.native.js +30 -0
  453. package/dist/esm/theme/Tint.native.js.map +1 -0
  454. package/dist/esm/theme/activateThemeConfig.mjs +17 -0
  455. package/dist/esm/theme/activateThemeConfig.mjs.map +1 -0
  456. package/dist/esm/theme/activateThemeConfig.native.js +17 -0
  457. package/dist/esm/theme/activateThemeConfig.native.js.map +1 -0
  458. package/dist/esm/theme/animations/css.mjs +7 -0
  459. package/dist/esm/theme/animations/css.mjs.map +1 -0
  460. package/dist/esm/theme/animations/css.native.js +7 -0
  461. package/dist/esm/theme/animations/css.native.js.map +1 -0
  462. package/dist/esm/theme/animations/index.mjs +2 -0
  463. package/dist/esm/theme/animations/index.mjs.map +1 -0
  464. package/dist/esm/theme/animations/index.native.js +2 -0
  465. package/dist/esm/theme/animations/index.native.js.map +1 -0
  466. package/dist/esm/theme/animations/reactNative.mjs +131 -0
  467. package/dist/esm/theme/animations/reactNative.mjs.map +1 -0
  468. package/dist/esm/theme/animations/reactNative.native.js +131 -0
  469. package/dist/esm/theme/animations/reactNative.native.js.map +1 -0
  470. package/dist/esm/theme/chartPalette.mjs +191 -0
  471. package/dist/esm/theme/chartPalette.mjs.map +1 -0
  472. package/dist/esm/theme/chartPalette.native.js +256 -0
  473. package/dist/esm/theme/chartPalette.native.js.map +1 -0
  474. package/dist/esm/theme/colorRules.mjs +273 -0
  475. package/dist/esm/theme/colorRules.mjs.map +1 -0
  476. package/dist/esm/theme/colorRules.native.js +306 -0
  477. package/dist/esm/theme/colorRules.native.js.map +1 -0
  478. package/dist/esm/theme/controlTiers.mjs +39 -0
  479. package/dist/esm/theme/controlTiers.mjs.map +1 -0
  480. package/dist/esm/theme/controlTiers.native.js +41 -0
  481. package/dist/esm/theme/controlTiers.native.js.map +1 -0
  482. package/dist/esm/theme/cookies.mjs +145 -0
  483. package/dist/esm/theme/cookies.mjs.map +1 -0
  484. package/dist/esm/theme/cookies.native.js +268 -0
  485. package/dist/esm/theme/cookies.native.js.map +1 -0
  486. package/dist/esm/theme/cornerSmoothing.mjs +71 -0
  487. package/dist/esm/theme/cornerSmoothing.mjs.map +1 -0
  488. package/dist/esm/theme/cornerSmoothing.native.js +28 -0
  489. package/dist/esm/theme/cornerSmoothing.native.js.map +1 -0
  490. package/dist/esm/theme/createDefaultThemeConfig.mjs +102 -0
  491. package/dist/esm/theme/createDefaultThemeConfig.mjs.map +1 -0
  492. package/dist/esm/theme/createDefaultThemeConfig.native.js +145 -0
  493. package/dist/esm/theme/createDefaultThemeConfig.native.js.map +1 -0
  494. package/dist/esm/theme/createThemes.mjs +697 -0
  495. package/dist/esm/theme/createThemes.mjs.map +1 -0
  496. package/dist/esm/theme/createThemes.native.js +1140 -0
  497. package/dist/esm/theme/createThemes.native.js.map +1 -0
  498. package/dist/esm/theme/dedupeInherited.mjs +55 -0
  499. package/dist/esm/theme/dedupeInherited.mjs.map +1 -0
  500. package/dist/esm/theme/dedupeInherited.native.js +163 -0
  501. package/dist/esm/theme/dedupeInherited.native.js.map +1 -0
  502. package/dist/esm/theme/defaults/accent.mjs +7 -0
  503. package/dist/esm/theme/defaults/accent.mjs.map +1 -0
  504. package/dist/esm/theme/defaults/accent.native.js +7 -0
  505. package/dist/esm/theme/defaults/accent.native.js.map +1 -0
  506. package/dist/esm/theme/defaults/base.mjs +23 -0
  507. package/dist/esm/theme/defaults/base.mjs.map +1 -0
  508. package/dist/esm/theme/defaults/base.native.js +23 -0
  509. package/dist/esm/theme/defaults/base.native.js.map +1 -0
  510. package/dist/esm/theme/defaults/builderOptions.mjs +165 -0
  511. package/dist/esm/theme/defaults/builderOptions.mjs.map +1 -0
  512. package/dist/esm/theme/defaults/builderOptions.native.js +233 -0
  513. package/dist/esm/theme/defaults/builderOptions.native.js.map +1 -0
  514. package/dist/esm/theme/defaults/categoryFonts.mjs +25 -0
  515. package/dist/esm/theme/defaults/categoryFonts.mjs.map +1 -0
  516. package/dist/esm/theme/defaults/categoryFonts.native.js +25 -0
  517. package/dist/esm/theme/defaults/categoryFonts.native.js.map +1 -0
  518. package/dist/esm/theme/defaults/fonts.mjs +227 -0
  519. package/dist/esm/theme/defaults/fonts.mjs.map +1 -0
  520. package/dist/esm/theme/defaults/fonts.native.js +316 -0
  521. package/dist/esm/theme/defaults/fonts.native.js.map +1 -0
  522. package/dist/esm/theme/defaults/house.mjs +13 -0
  523. package/dist/esm/theme/defaults/house.mjs.map +1 -0
  524. package/dist/esm/theme/defaults/house.native.js +17 -0
  525. package/dist/esm/theme/defaults/house.native.js.map +1 -0
  526. package/dist/esm/theme/defaults/index.mjs +7 -0
  527. package/dist/esm/theme/defaults/index.mjs.map +1 -0
  528. package/dist/esm/theme/defaults/index.native.js +7 -0
  529. package/dist/esm/theme/defaults/index.native.js.map +1 -0
  530. package/dist/esm/theme/devtools/ColorLineVisualizer.mjs +218 -0
  531. package/dist/esm/theme/devtools/ColorLineVisualizer.mjs.map +1 -0
  532. package/dist/esm/theme/devtools/ColorLineVisualizer.native.js +230 -0
  533. package/dist/esm/theme/devtools/ColorLineVisualizer.native.js.map +1 -0
  534. package/dist/esm/theme/devtools/ThemeDevtoolsPanel.mjs +1325 -0
  535. package/dist/esm/theme/devtools/ThemeDevtoolsPanel.mjs.map +1 -0
  536. package/dist/esm/theme/devtools/ThemeDevtoolsPanel.native.js +1786 -0
  537. package/dist/esm/theme/devtools/ThemeDevtoolsPanel.native.js.map +1 -0
  538. package/dist/esm/theme/devtools/animationOptions.mjs +11 -0
  539. package/dist/esm/theme/devtools/animationOptions.mjs.map +1 -0
  540. package/dist/esm/theme/devtools/animationOptions.native.js +18 -0
  541. package/dist/esm/theme/devtools/animationOptions.native.js.map +1 -0
  542. package/dist/esm/theme/devtools/buildSnapshot.mjs +67 -0
  543. package/dist/esm/theme/devtools/buildSnapshot.mjs.map +1 -0
  544. package/dist/esm/theme/devtools/buildSnapshot.native.js +146 -0
  545. package/dist/esm/theme/devtools/buildSnapshot.native.js.map +1 -0
  546. package/dist/esm/theme/devtools/knobIcons.mjs +456 -0
  547. package/dist/esm/theme/devtools/knobIcons.mjs.map +1 -0
  548. package/dist/esm/theme/devtools/knobIcons.native.js +464 -0
  549. package/dist/esm/theme/devtools/knobIcons.native.js.map +1 -0
  550. package/dist/esm/theme/devtools/vizConstants.mjs +26 -0
  551. package/dist/esm/theme/devtools/vizConstants.mjs.map +1 -0
  552. package/dist/esm/theme/devtools/vizConstants.native.js +26 -0
  553. package/dist/esm/theme/devtools/vizConstants.native.js.map +1 -0
  554. package/dist/esm/theme/dynamicType.mjs +24 -0
  555. package/dist/esm/theme/dynamicType.mjs.map +1 -0
  556. package/dist/esm/theme/dynamicType.native.js +24 -0
  557. package/dist/esm/theme/dynamicType.native.js.map +1 -0
  558. package/dist/esm/theme/fieldFocus.mjs +27 -0
  559. package/dist/esm/theme/fieldFocus.mjs.map +1 -0
  560. package/dist/esm/theme/fieldFocus.native.js +30 -0
  561. package/dist/esm/theme/fieldFocus.native.js.map +1 -0
  562. package/dist/esm/theme/fillContrast.mjs +98 -0
  563. package/dist/esm/theme/fillContrast.mjs.map +1 -0
  564. package/dist/esm/theme/fillContrast.native.js +128 -0
  565. package/dist/esm/theme/fillContrast.native.js.map +1 -0
  566. package/dist/esm/theme/focusState.mjs +81 -0
  567. package/dist/esm/theme/focusState.mjs.map +1 -0
  568. package/dist/esm/theme/focusState.native.js +81 -0
  569. package/dist/esm/theme/focusState.native.js.map +1 -0
  570. package/dist/esm/theme/fontCategoryMetrics.mjs +65 -0
  571. package/dist/esm/theme/fontCategoryMetrics.mjs.map +1 -0
  572. package/dist/esm/theme/fontCategoryMetrics.native.js +65 -0
  573. package/dist/esm/theme/fontCategoryMetrics.native.js.map +1 -0
  574. package/dist/esm/theme/fontCategoryStacks.mjs +15 -0
  575. package/dist/esm/theme/fontCategoryStacks.mjs.map +1 -0
  576. package/dist/esm/theme/fontCategoryStacks.native.js +15 -0
  577. package/dist/esm/theme/fontCategoryStacks.native.js.map +1 -0
  578. package/dist/esm/theme/glyphPaint.mjs +29 -0
  579. package/dist/esm/theme/glyphPaint.mjs.map +1 -0
  580. package/dist/esm/theme/glyphPaint.native.js +52 -0
  581. package/dist/esm/theme/glyphPaint.native.js.map +1 -0
  582. package/dist/esm/theme/glyphTint.mjs +60 -0
  583. package/dist/esm/theme/glyphTint.mjs.map +1 -0
  584. package/dist/esm/theme/glyphTint.native.js +63 -0
  585. package/dist/esm/theme/glyphTint.native.js.map +1 -0
  586. package/dist/esm/theme/groupGeometry.mjs +38 -0
  587. package/dist/esm/theme/groupGeometry.mjs.map +1 -0
  588. package/dist/esm/theme/groupGeometry.native.js +40 -0
  589. package/dist/esm/theme/groupGeometry.native.js.map +1 -0
  590. package/dist/esm/theme/hairline.mjs +89 -0
  591. package/dist/esm/theme/hairline.mjs.map +1 -0
  592. package/dist/esm/theme/hairline.native.js +41 -0
  593. package/dist/esm/theme/hairline.native.js.map +1 -0
  594. package/dist/esm/theme/index.mjs +66 -0
  595. package/dist/esm/theme/index.mjs.map +1 -0
  596. package/dist/esm/theme/index.native.js +66 -0
  597. package/dist/esm/theme/index.native.js.map +1 -0
  598. package/dist/esm/theme/intents.mjs +37 -0
  599. package/dist/esm/theme/intents.mjs.map +1 -0
  600. package/dist/esm/theme/intents.native.js +37 -0
  601. package/dist/esm/theme/intents.native.js.map +1 -0
  602. package/dist/esm/theme/knobs.mjs +125 -0
  603. package/dist/esm/theme/knobs.mjs.map +1 -0
  604. package/dist/esm/theme/knobs.native.js +125 -0
  605. package/dist/esm/theme/knobs.native.js.map +1 -0
  606. package/dist/esm/theme/layoutTokens.mjs +124 -0
  607. package/dist/esm/theme/layoutTokens.mjs.map +1 -0
  608. package/dist/esm/theme/layoutTokens.native.js +171 -0
  609. package/dist/esm/theme/layoutTokens.native.js.map +1 -0
  610. package/dist/esm/theme/listRows.mjs +17 -0
  611. package/dist/esm/theme/listRows.mjs.map +1 -0
  612. package/dist/esm/theme/listRows.native.js +19 -0
  613. package/dist/esm/theme/listRows.native.js.map +1 -0
  614. package/dist/esm/theme/mergedTokens.mjs +14 -0
  615. package/dist/esm/theme/mergedTokens.mjs.map +1 -0
  616. package/dist/esm/theme/mergedTokens.native.js +33 -0
  617. package/dist/esm/theme/mergedTokens.native.js.map +1 -0
  618. package/dist/esm/theme/motion.mjs +41 -0
  619. package/dist/esm/theme/motion.mjs.map +1 -0
  620. package/dist/esm/theme/motion.native.js +48 -0
  621. package/dist/esm/theme/motion.native.js.map +1 -0
  622. package/dist/esm/theme/motionStops.mjs +3 -0
  623. package/dist/esm/theme/motionStops.mjs.map +1 -0
  624. package/dist/esm/theme/motionStops.native.js +3 -0
  625. package/dist/esm/theme/motionStops.native.js.map +1 -0
  626. package/dist/esm/theme/motionTiming.mjs +48 -0
  627. package/dist/esm/theme/motionTiming.mjs.map +1 -0
  628. package/dist/esm/theme/motionTiming.native.js +51 -0
  629. package/dist/esm/theme/motionTiming.native.js.map +1 -0
  630. package/dist/esm/theme/nativeFontFamily.mjs +5 -0
  631. package/dist/esm/theme/nativeFontFamily.mjs.map +1 -0
  632. package/dist/esm/theme/nativeFontFamily.native.js +9 -0
  633. package/dist/esm/theme/nativeFontFamily.native.js.map +1 -0
  634. package/dist/esm/theme/nativeMonoFamily.mjs +18 -0
  635. package/dist/esm/theme/nativeMonoFamily.mjs.map +1 -0
  636. package/dist/esm/theme/nativeMonoFamily.native.js +18 -0
  637. package/dist/esm/theme/nativeMonoFamily.native.js.map +1 -0
  638. package/dist/esm/theme/overlaySurfaces.mjs +290 -0
  639. package/dist/esm/theme/overlaySurfaces.mjs.map +1 -0
  640. package/dist/esm/theme/overlaySurfaces.native.js +311 -0
  641. package/dist/esm/theme/overlaySurfaces.native.js.map +1 -0
  642. package/dist/esm/theme/pageGutter.mjs +55 -0
  643. package/dist/esm/theme/pageGutter.mjs.map +1 -0
  644. package/dist/esm/theme/pageGutter.native.js +59 -0
  645. package/dist/esm/theme/pageGutter.native.js.map +1 -0
  646. package/dist/esm/theme/preset.types.mjs +2 -0
  647. package/dist/esm/theme/preset.types.mjs.map +1 -0
  648. package/dist/esm/theme/preset.types.native.js +2 -0
  649. package/dist/esm/theme/preset.types.native.js.map +1 -0
  650. package/dist/esm/theme/presetPreview.mjs +17 -0
  651. package/dist/esm/theme/presetPreview.mjs.map +1 -0
  652. package/dist/esm/theme/presetPreview.native.js +18 -0
  653. package/dist/esm/theme/presetPreview.native.js.map +1 -0
  654. package/dist/esm/theme/presetStore.mjs +251 -0
  655. package/dist/esm/theme/presetStore.mjs.map +1 -0
  656. package/dist/esm/theme/presetStore.native.js +304 -0
  657. package/dist/esm/theme/presetStore.native.js.map +1 -0
  658. package/dist/esm/theme/presetUserSync.mjs +44 -0
  659. package/dist/esm/theme/presetUserSync.mjs.map +1 -0
  660. package/dist/esm/theme/presetUserSync.native.js +46 -0
  661. package/dist/esm/theme/presetUserSync.native.js.map +1 -0
  662. package/dist/esm/theme/presets.mjs +97 -0
  663. package/dist/esm/theme/presets.mjs.map +1 -0
  664. package/dist/esm/theme/presets.native.js +97 -0
  665. package/dist/esm/theme/presets.native.js.map +1 -0
  666. package/dist/esm/theme/radiusClass.mjs +99 -0
  667. package/dist/esm/theme/radiusClass.mjs.map +1 -0
  668. package/dist/esm/theme/radiusClass.native.js +105 -0
  669. package/dist/esm/theme/radiusClass.native.js.map +1 -0
  670. package/dist/esm/theme/radiusClassTable.generated.mjs +135 -0
  671. package/dist/esm/theme/radiusClassTable.generated.mjs.map +1 -0
  672. package/dist/esm/theme/radiusClassTable.generated.native.js +135 -0
  673. package/dist/esm/theme/radiusClassTable.generated.native.js.map +1 -0
  674. package/dist/esm/theme/ramps.mjs +48 -0
  675. package/dist/esm/theme/ramps.mjs.map +1 -0
  676. package/dist/esm/theme/ramps.native.js +49 -0
  677. package/dist/esm/theme/ramps.native.js.map +1 -0
  678. package/dist/esm/theme/readableColor.mjs +248 -0
  679. package/dist/esm/theme/readableColor.mjs.map +1 -0
  680. package/dist/esm/theme/readableColor.native.js +354 -0
  681. package/dist/esm/theme/readableColor.native.js.map +1 -0
  682. package/dist/esm/theme/recipeInputs.mjs +309 -0
  683. package/dist/esm/theme/recipeInputs.mjs.map +1 -0
  684. package/dist/esm/theme/recipeInputs.native.js +424 -0
  685. package/dist/esm/theme/recipeInputs.native.js.map +1 -0
  686. package/dist/esm/theme/recipes.mjs +2 -0
  687. package/dist/esm/theme/recipes.mjs.map +1 -0
  688. package/dist/esm/theme/recipes.native.js +2 -0
  689. package/dist/esm/theme/recipes.native.js.map +1 -0
  690. package/dist/esm/theme/resolveKnobs.mjs +818 -0
  691. package/dist/esm/theme/resolveKnobs.mjs.map +1 -0
  692. package/dist/esm/theme/resolveKnobs.native.js +833 -0
  693. package/dist/esm/theme/resolveKnobs.native.js.map +1 -0
  694. package/dist/esm/theme/scale/ScaleStyles.mjs +30 -0
  695. package/dist/esm/theme/scale/ScaleStyles.mjs.map +1 -0
  696. package/dist/esm/theme/scale/ScaleStyles.native.js +11 -0
  697. package/dist/esm/theme/scale/ScaleStyles.native.js.map +1 -0
  698. package/dist/esm/theme/scale/activeScale.mjs +28 -0
  699. package/dist/esm/theme/scale/activeScale.mjs.map +1 -0
  700. package/dist/esm/theme/scale/activeScale.native.js +53 -0
  701. package/dist/esm/theme/scale/activeScale.native.js.map +1 -0
  702. package/dist/esm/theme/scale/deriveRecipeInputs.mjs +86 -0
  703. package/dist/esm/theme/scale/deriveRecipeInputs.mjs.map +1 -0
  704. package/dist/esm/theme/scale/deriveRecipeInputs.native.js +126 -0
  705. package/dist/esm/theme/scale/deriveRecipeInputs.native.js.map +1 -0
  706. package/dist/esm/theme/scale/generateScale.mjs +85 -0
  707. package/dist/esm/theme/scale/generateScale.mjs.map +1 -0
  708. package/dist/esm/theme/scale/generateScale.native.js +168 -0
  709. package/dist/esm/theme/scale/generateScale.native.js.map +1 -0
  710. package/dist/esm/theme/scale/index.mjs +12 -0
  711. package/dist/esm/theme/scale/index.mjs.map +1 -0
  712. package/dist/esm/theme/scale/index.native.js +12 -0
  713. package/dist/esm/theme/scale/index.native.js.map +1 -0
  714. package/dist/esm/theme/scale/installScaleConfig.mjs +6 -0
  715. package/dist/esm/theme/scale/installScaleConfig.mjs.map +1 -0
  716. package/dist/esm/theme/scale/installScaleConfig.native.js +36 -0
  717. package/dist/esm/theme/scale/installScaleConfig.native.js.map +1 -0
  718. package/dist/esm/theme/scale/scaleAttribute.mjs +11 -0
  719. package/dist/esm/theme/scale/scaleAttribute.mjs.map +1 -0
  720. package/dist/esm/theme/scale/scaleAttribute.native.js +11 -0
  721. package/dist/esm/theme/scale/scaleAttribute.native.js.map +1 -0
  722. package/dist/esm/theme/scale/scaleCss.mjs +62 -0
  723. package/dist/esm/theme/scale/scaleCss.mjs.map +1 -0
  724. package/dist/esm/theme/scale/scaleCss.native.js +171 -0
  725. package/dist/esm/theme/scale/scaleCss.native.js.map +1 -0
  726. package/dist/esm/theme/scale/scaleFonts.mjs +60 -0
  727. package/dist/esm/theme/scale/scaleFonts.mjs.map +1 -0
  728. package/dist/esm/theme/scale/scaleFonts.native.js +126 -0
  729. package/dist/esm/theme/scale/scaleFonts.native.js.map +1 -0
  730. package/dist/esm/theme/scale/scaleInputs.mjs +189 -0
  731. package/dist/esm/theme/scale/scaleInputs.mjs.map +1 -0
  732. package/dist/esm/theme/scale/scaleInputs.native.js +191 -0
  733. package/dist/esm/theme/scale/scaleInputs.native.js.map +1 -0
  734. package/dist/esm/theme/scale/themeScales.mjs +109 -0
  735. package/dist/esm/theme/scale/themeScales.mjs.map +1 -0
  736. package/dist/esm/theme/scale/themeScales.native.js +155 -0
  737. package/dist/esm/theme/scale/themeScales.native.js.map +1 -0
  738. package/dist/esm/theme/scale/useActiveScale.mjs +51 -0
  739. package/dist/esm/theme/scale/useActiveScale.mjs.map +1 -0
  740. package/dist/esm/theme/scale/useActiveScale.native.js +57 -0
  741. package/dist/esm/theme/scale/useActiveScale.native.js.map +1 -0
  742. package/dist/esm/theme/schemeStore.mjs +59 -0
  743. package/dist/esm/theme/schemeStore.mjs.map +1 -0
  744. package/dist/esm/theme/schemeStore.native.js +73 -0
  745. package/dist/esm/theme/schemeStore.native.js.map +1 -0
  746. package/dist/esm/theme/shared.mjs +95 -0
  747. package/dist/esm/theme/shared.mjs.map +1 -0
  748. package/dist/esm/theme/shared.native.js +135 -0
  749. package/dist/esm/theme/shared.native.js.map +1 -0
  750. package/dist/esm/theme/sizeRecipes.mjs +112 -0
  751. package/dist/esm/theme/sizeRecipes.mjs.map +1 -0
  752. package/dist/esm/theme/sizeRecipes.native.js +184 -0
  753. package/dist/esm/theme/sizeRecipes.native.js.map +1 -0
  754. package/dist/esm/theme/subsetThemes.mjs +21 -0
  755. package/dist/esm/theme/subsetThemes.mjs.map +1 -0
  756. package/dist/esm/theme/subsetThemes.native.js +48 -0
  757. package/dist/esm/theme/subsetThemes.native.js.map +1 -0
  758. package/dist/esm/theme/theme.mjs +163 -0
  759. package/dist/esm/theme/theme.mjs.map +1 -0
  760. package/dist/esm/theme/theme.native.js +87 -0
  761. package/dist/esm/theme/theme.native.js.map +1 -0
  762. package/dist/esm/theme/themeValue.mjs +25 -0
  763. package/dist/esm/theme/themeValue.mjs.map +1 -0
  764. package/dist/esm/theme/themeValue.native.js +44 -0
  765. package/dist/esm/theme/themeValue.native.js.map +1 -0
  766. package/dist/esm/theme/tileSizes.mjs +167 -0
  767. package/dist/esm/theme/tileSizes.mjs.map +1 -0
  768. package/dist/esm/theme/tileSizes.native.js +192 -0
  769. package/dist/esm/theme/tileSizes.native.js.map +1 -0
  770. package/dist/esm/theme/touchManipulation.mjs +7 -0
  771. package/dist/esm/theme/touchManipulation.mjs.map +1 -0
  772. package/dist/esm/theme/touchManipulation.native.js +7 -0
  773. package/dist/esm/theme/touchManipulation.native.js.map +1 -0
  774. package/dist/esm/theme/transitionProps.mjs +25 -0
  775. package/dist/esm/theme/transitionProps.mjs.map +1 -0
  776. package/dist/esm/theme/transitionProps.native.js +53 -0
  777. package/dist/esm/theme/transitionProps.native.js.map +1 -0
  778. package/dist/esm/theme/useColorScale.mjs +22 -0
  779. package/dist/esm/theme/useColorScale.mjs.map +1 -0
  780. package/dist/esm/theme/useColorScale.native.js +5 -0
  781. package/dist/esm/theme/useColorScale.native.js.map +1 -0
  782. package/dist/esm/theme/usePresetSwitch.mjs +45 -0
  783. package/dist/esm/theme/usePresetSwitch.mjs.map +1 -0
  784. package/dist/esm/theme/usePresetSwitch.native.js +22 -0
  785. package/dist/esm/theme/usePresetSwitch.native.js.map +1 -0
  786. package/dist/esm/theme/useResolvedKnobs.mjs +111 -0
  787. package/dist/esm/theme/useResolvedKnobs.mjs.map +1 -0
  788. package/dist/esm/theme/useResolvedKnobs.native.js +145 -0
  789. package/dist/esm/theme/useResolvedKnobs.native.js.map +1 -0
  790. package/dist/esm/theme/useSchemePreference.mjs +24 -0
  791. package/dist/esm/theme/useSchemePreference.mjs.map +1 -0
  792. package/dist/esm/theme/useSchemePreference.native.js +52 -0
  793. package/dist/esm/theme/useSchemePreference.native.js.map +1 -0
  794. package/dist/esm/theme/useTheme.mjs +127 -0
  795. package/dist/esm/theme/useTheme.mjs.map +1 -0
  796. package/dist/esm/theme/useTheme.native.js +66 -0
  797. package/dist/esm/theme/useTheme.native.js.map +1 -0
  798. package/dist/esm/theme/useTouchSurface.mjs +8 -0
  799. package/dist/esm/theme/useTouchSurface.mjs.map +1 -0
  800. package/dist/esm/theme/useTouchSurface.native.js +8 -0
  801. package/dist/esm/theme/useTouchSurface.native.js.map +1 -0
  802. package/dist/esm/theme/v3TokenRoles.mjs +39 -0
  803. package/dist/esm/theme/v3TokenRoles.mjs.map +1 -0
  804. package/dist/esm/theme/v3TokenRoles.native.js +39 -0
  805. package/dist/esm/theme/v3TokenRoles.native.js.map +1 -0
  806. package/package.json +56 -12
  807. package/src/expo.ts +20 -0
  808. package/src/fonts/createFontLoader.ts +8 -4
  809. package/src/fonts/index.ts +1 -0
  810. package/src/fonts/interFaces.spec.ts +87 -0
  811. package/src/fonts/interFaces.ts +26 -0
  812. package/src/theme/accentButtonLabel.spec.ts +116 -0
  813. package/src/theme/colorRules.ts +41 -0
  814. package/src/theme/controlTiers.ts +6 -4
  815. package/src/theme/defaults/fonts.spec.ts +9 -2
  816. package/src/theme/defaults/fonts.ts +5 -8
  817. package/src/theme/glyphTint.spec.ts +30 -2
  818. package/src/theme/glyphTint.ts +1 -47
  819. package/src/theme/hairline.spec.ts +60 -3
  820. package/src/theme/hairline.ts +35 -5
  821. package/src/theme/readableColor.ts +49 -0
  822. package/src/theme/resolveKnobs.ts +172 -101
  823. package/src/theme/scale/activeScale.spec.ts +33 -0
  824. package/src/theme/scale/activeScale.ts +19 -0
  825. package/src/theme/scale/index.ts +6 -1
  826. package/src/theme/subsetThemes.spec.ts +81 -0
  827. package/src/theme/subsetThemes.ts +13 -1
  828. package/types/expo.d.ts +10 -0
  829. package/types/expo.d.ts.map +1 -1
  830. package/types/fonts/createFontLoader.d.ts.map +1 -1
  831. package/types/fonts/index.d.ts +1 -0
  832. package/types/fonts/index.d.ts.map +1 -1
  833. package/types/fonts/interFaces.d.ts +23 -0
  834. package/types/fonts/interFaces.d.ts.map +1 -0
  835. package/types/theme/colorRules.d.ts +6 -0
  836. package/types/theme/colorRules.d.ts.map +1 -1
  837. package/types/theme/controlTiers.d.ts +5 -3
  838. package/types/theme/controlTiers.d.ts.map +1 -1
  839. package/types/theme/defaults/fonts.d.ts +30 -30
  840. package/types/theme/defaults/fonts.d.ts.map +1 -1
  841. package/types/theme/glyphTint.d.ts +0 -6
  842. package/types/theme/glyphTint.d.ts.map +1 -1
  843. package/types/theme/hairline.d.ts +14 -3
  844. package/types/theme/hairline.d.ts.map +1 -1
  845. package/types/theme/readableColor.d.ts +19 -0
  846. package/types/theme/readableColor.d.ts.map +1 -1
  847. package/types/theme/resolveKnobs.d.ts.map +1 -1
  848. package/types/theme/scale/activeScale.d.ts +8 -0
  849. package/types/theme/scale/activeScale.d.ts.map +1 -1
  850. package/types/theme/scale/index.d.ts +1 -1
  851. package/types/theme/scale/index.d.ts.map +1 -1
  852. package/types/theme/subsetThemes.d.ts +10 -1
  853. package/types/theme/subsetThemes.d.ts.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/theme",
3
- "version": "7.83.1",
3
+ "version": "7.84.0",
4
4
  "description": "Tamagui theme system for multiplatform.one",
5
5
  "keywords": [
6
6
  "multiplatform",
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "source": "src/index.ts",
19
19
  "files": [
20
+ "dist",
20
21
  "src",
21
22
  "!src/**/__snapshots__",
22
23
  "expo.cjs",
@@ -33,32 +34,74 @@
33
34
  ".": {
34
35
  "source": "./src/index.ts",
35
36
  "types": "./types/index.d.ts",
36
- "default": "./src/index.ts"
37
+ "react-native": {
38
+ "types": "./types/index.d.ts",
39
+ "import": "./dist/esm/index.native.js",
40
+ "require": "./dist/cjs/index.native.js"
41
+ },
42
+ "import": "./dist/esm/index.mjs",
43
+ "require": "./dist/cjs/index.cjs",
44
+ "default": "./dist/esm/index.mjs"
37
45
  },
38
46
  "./audit": {
39
47
  "source": "./src/audit/index.ts",
40
48
  "types": "./types/audit/index.d.ts",
41
- "default": "./src/audit/index.ts"
49
+ "react-native": {
50
+ "types": "./types/audit/index.d.ts",
51
+ "import": "./dist/esm/audit/index.native.js",
52
+ "require": "./dist/cjs/audit/index.native.js"
53
+ },
54
+ "import": "./dist/esm/audit/index.mjs",
55
+ "require": "./dist/cjs/audit/index.cjs",
56
+ "default": "./dist/esm/audit/index.mjs"
42
57
  },
43
58
  "./scale-attribute": {
44
59
  "source": "./src/theme/scale/scaleAttribute.ts",
45
60
  "types": "./types/theme/scale/scaleAttribute.d.ts",
46
- "default": "./src/theme/scale/scaleAttribute.ts"
61
+ "react-native": {
62
+ "types": "./types/theme/scale/scaleAttribute.d.ts",
63
+ "import": "./dist/esm/theme/scale/scaleAttribute.native.js",
64
+ "require": "./dist/cjs/theme/scale/scaleAttribute.native.js"
65
+ },
66
+ "import": "./dist/esm/theme/scale/scaleAttribute.mjs",
67
+ "require": "./dist/cjs/theme/scale/scaleAttribute.cjs",
68
+ "default": "./dist/esm/theme/scale/scaleAttribute.mjs"
47
69
  },
48
70
  "./design-tokens": {
49
71
  "source": "./src/audit/designTokens.ts",
50
72
  "types": "./types/audit/designTokens.d.ts",
51
- "default": "./src/audit/designTokens.ts"
73
+ "react-native": {
74
+ "types": "./types/audit/designTokens.d.ts",
75
+ "import": "./dist/esm/audit/designTokens.native.js",
76
+ "require": "./dist/cjs/audit/designTokens.native.js"
77
+ },
78
+ "import": "./dist/esm/audit/designTokens.mjs",
79
+ "require": "./dist/cjs/audit/designTokens.cjs",
80
+ "default": "./dist/esm/audit/designTokens.mjs"
52
81
  },
53
82
  "./ramps": {
54
83
  "source": "./src/theme/ramps.ts",
55
84
  "types": "./types/theme/ramps.d.ts",
56
- "default": "./src/theme/ramps.ts"
85
+ "react-native": {
86
+ "types": "./types/theme/ramps.d.ts",
87
+ "import": "./dist/esm/theme/ramps.native.js",
88
+ "require": "./dist/cjs/theme/ramps.native.js"
89
+ },
90
+ "import": "./dist/esm/theme/ramps.mjs",
91
+ "require": "./dist/cjs/theme/ramps.cjs",
92
+ "default": "./dist/esm/theme/ramps.mjs"
57
93
  },
58
94
  "./motion": {
59
95
  "source": "./src/theme/motionTiming.ts",
60
96
  "types": "./types/theme/motionTiming.d.ts",
61
- "default": "./src/theme/motionTiming.ts"
97
+ "react-native": {
98
+ "types": "./types/theme/motionTiming.d.ts",
99
+ "import": "./dist/esm/theme/motionTiming.native.js",
100
+ "require": "./dist/cjs/theme/motionTiming.native.js"
101
+ },
102
+ "import": "./dist/esm/theme/motionTiming.mjs",
103
+ "require": "./dist/cjs/theme/motionTiming.cjs",
104
+ "default": "./dist/esm/theme/motionTiming.mjs"
62
105
  },
63
106
  "./expo": {
64
107
  "source": "./src/expo.ts",
@@ -72,8 +115,8 @@
72
115
  "access": "public"
73
116
  },
74
117
  "dependencies": {
75
- "@multiplatform.one/platform": "^7.83.1",
76
- "@multiplatform.one/store": "^7.83.1",
118
+ "@multiplatform.one/platform": "^7.84.0",
119
+ "@multiplatform.one/store": "^7.84.0",
77
120
  "@tamagui/animations-react-native": "2.7.6",
78
121
  "@tamagui/colors": "2.7.6",
79
122
  "@tamagui/config": "2.7.6",
@@ -89,10 +132,11 @@
89
132
  },
90
133
  "devDependencies": {
91
134
  "@expo/prebuild-config": "55.0.18",
92
- "@multiplatform.one/config": "7.83.1",
93
- "@multiplatform.one/test-utils": "7.83.1",
135
+ "@multiplatform.one/config": "7.84.0",
136
+ "@multiplatform.one/test-utils": "7.84.0",
94
137
  "@tamagui/animations-css": "2.7.6",
95
138
  "@tamagui/animations-reanimated": "2.7.6",
139
+ "@tamagui/build": "2.7.6",
96
140
  "@tamagui/font-inter": "2.7.6",
97
141
  "@testing-library/react": "^16.3.3",
98
142
  "@vitejs/plugin-react": "^6.1.2",
@@ -128,6 +172,6 @@
128
172
  "scripts": {
129
173
  "test": "vitest run --coverage --coverage.provider=v8 --coverage.reporter=text --coverage.reporter=lcov --coverage.reporter=html",
130
174
  "typecheck": "tsgo --noEmit",
131
- "build": "tsc -p tsconfig.build.json"
175
+ "build": "rm -rf dist types 2>/dev/null && tamagui-build --ts-project ./tsconfig.build.json --exclude '\\.spec\\.|\\.test\\.|\\.stories\\.'"
132
176
  }
133
177
  }
package/src/expo.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { normalizeCSSColor } from "@tamagui/normalize-css-color";
2
+ import { interFaceFile, interFaceNames } from "./fonts/interFaces";
2
3
  import { createThemesBuilder } from "./theme/createThemes";
3
4
  import { defaultAccentTheme } from "./theme/defaults/accent";
4
5
  import { defaultBaseTheme } from "./theme/defaults/base";
@@ -65,3 +66,22 @@ export function createExpoThemeColors({
65
66
  adaptiveIcon: { backgroundColor: adaptiveIconScheme === "dark" ? dark : light },
66
67
  };
67
68
  }
69
+
70
+ /**
71
+ * The expo-font config plugin entry that embeds MPO's Inter faces in the
72
+ * native binary (FZ-8572), plus any extra font files an app passes. A
73
+ * production vxrn bundle carries no .otf assets, so a face that is only
74
+ * loaded at runtime falls back to the system font. Embedding needs a
75
+ * prebuild and a new binary; an OTA cannot add it.
76
+ */
77
+ export function interExpoFontPlugin(extraFonts: string[] = []): ["expo-font", { fonts: string[] }] {
78
+ return [
79
+ "expo-font",
80
+ {
81
+ fonts: [
82
+ ...Object.values(interFaceNames).map((name) => require.resolve(interFaceFile(name))),
83
+ ...extraFonts,
84
+ ],
85
+ },
86
+ ];
87
+ }
@@ -3,11 +3,15 @@ import type { FontLoader, FontLoaderConfig } from "./types";
3
3
  export function createFontLoader(config: FontLoaderConfig): FontLoader {
4
4
  const fontMap: Record<string, number> = {};
5
5
  if (config.inter) {
6
+ // Keys are interFaceNames (./interFaces.ts); Metro needs literal paths.
7
+ // An app that embeds them through interExpoFontPlugin finds them already
8
+ // registered, and expo-font skips the load.
6
9
  fontMap.Inter = require("@tamagui/font-inter/otf/Inter-Regular.otf");
7
- fontMap.InterMedium = require("@tamagui/font-inter/otf/Inter-Medium.otf");
8
- fontMap.InterSemiBold = require("@tamagui/font-inter/otf/Inter-SemiBold.otf");
9
- fontMap.InterExtraBold = require("@tamagui/font-inter/otf/Inter-ExtraBold.otf");
10
- fontMap.InterBold = require("@tamagui/font-inter/otf/Inter-Bold.otf");
10
+ fontMap["Inter-Regular"] = require("@tamagui/font-inter/otf/Inter-Regular.otf");
11
+ fontMap["Inter-Medium"] = require("@tamagui/font-inter/otf/Inter-Medium.otf");
12
+ fontMap["Inter-SemiBold"] = require("@tamagui/font-inter/otf/Inter-SemiBold.otf");
13
+ fontMap["Inter-Bold"] = require("@tamagui/font-inter/otf/Inter-Bold.otf");
14
+ fontMap["Inter-ExtraBold"] = require("@tamagui/font-inter/otf/Inter-ExtraBold.otf");
11
15
  }
12
16
  for (const font of config.fonts) {
13
17
  if (font.nativeModule) {
@@ -1,2 +1,3 @@
1
1
  export * from "./createFontLoader";
2
+ export * from "./interFaces";
2
3
  export * from "./types";
@@ -0,0 +1,87 @@
1
+ /**
2
+ * FZ-8572: every Inter face the native face map asks for is a font the app
3
+ * embeds (interExpoFontPlugin) and loads (createFontLoader), under the
4
+ * PostScript name iOS registers an embedded file by. The face map used to ask
5
+ * for "InterMedium" and friends, aliases that exist only when expo-font loads
6
+ * the OTFs at runtime; a production vxrn bundle carries no .otf assets, so
7
+ * 500 to 800 fell back to the system font.
8
+ */
9
+
10
+ import { readFileSync } from "node:fs";
11
+ import { createRequire } from "node:module";
12
+ import { describe, expect, it } from "vitest";
13
+ import { interExpoFontPlugin } from "../expo";
14
+ import { defaultBodyFont, defaultHeadingFont } from "../theme/defaults/fonts";
15
+ import { createFontLoader } from "./createFontLoader.js";
16
+ import { interFaceFile, interFaceNames } from "./interFaces";
17
+
18
+ const require = createRequire(import.meta.url);
19
+
20
+ /** An OpenType font's PostScript name (name ID 6) and OS/2 weight class. */
21
+ function readFace(path: string): { postScript: string; weight: number } {
22
+ const data = readFileSync(path);
23
+ const tables = new Map<string, number>();
24
+ for (let i = 0; i < data.readUInt16BE(4); i++) {
25
+ const record = 12 + i * 16;
26
+ tables.set(data.toString("latin1", record, record + 4), data.readUInt32BE(record + 8));
27
+ }
28
+ const name = tables.get("name")!;
29
+ const strings = name + data.readUInt16BE(name + 4);
30
+ let postScript = "";
31
+ for (let i = 0; i < data.readUInt16BE(name + 2); i++) {
32
+ const record = name + 6 + i * 12;
33
+ if (data.readUInt16BE(record + 6) !== 6) continue;
34
+ const length = data.readUInt16BE(record + 8);
35
+ const start = strings + data.readUInt16BE(record + 10);
36
+ const raw = data.subarray(start, start + length);
37
+ postScript =
38
+ data.readUInt16BE(record) === 1 ? raw.toString("latin1") : raw.swap16().toString("utf16le");
39
+ break;
40
+ }
41
+ return { postScript, weight: data.readUInt16BE(tables.get("OS/2")! + 4) };
42
+ }
43
+
44
+ const faces = Object.entries(interFaceNames).map(
45
+ ([weight, name]) => [Number(weight), name] as const,
46
+ );
47
+
48
+ describe("Inter faces are embedded and loaded under the names the face map uses (FZ-8572)", () => {
49
+ it.each(faces)("weight %i ships an OTF whose PostScript name is %s", (weight, name) => {
50
+ expect(readFace(require.resolve(interFaceFile(name)))).toEqual({ postScript: name, weight });
51
+ });
52
+
53
+ it("the expo-font plugin embeds exactly the face-map files", () => {
54
+ const [plugin, { fonts }] = interExpoFontPlugin();
55
+ expect(plugin).toBe("expo-font");
56
+ expect(fonts).toEqual(faces.map(([, name]) => require.resolve(interFaceFile(name))));
57
+ });
58
+
59
+ it("the plugin keeps an app's extra fonts after the Inter faces", () => {
60
+ expect(interExpoFontPlugin(["./fonts/Extra.otf"])[1].fonts.at(-1)).toBe("./fonts/Extra.otf");
61
+ });
62
+
63
+ it("the native face map names only embedded faces, at every weight", () => {
64
+ const embedded = new Set<string>(Object.values(interFaceNames));
65
+ for (const font of [defaultHeadingFont, defaultBodyFont]) {
66
+ const face = font.face as Record<string, { normal?: string }>;
67
+ for (const [weight, name] of faces) expect(face[weight]?.normal).toBe(name);
68
+ for (const { normal } of Object.values(face)) {
69
+ if (normal !== font.family) expect(embedded).toContain(normal);
70
+ }
71
+ }
72
+ });
73
+
74
+ it("the runtime loader registers every face-map name", () => {
75
+ const original = require.extensions[".otf"];
76
+ require.extensions[".otf"] = (module) => {
77
+ module.exports = 1;
78
+ };
79
+ try {
80
+ const fonts = createFontLoader({ inter: true, fonts: [] }).importFonts();
81
+ for (const [, name] of faces) expect(fonts).toHaveProperty([name]);
82
+ } finally {
83
+ if (original) require.extensions[".otf"] = original;
84
+ else delete require.extensions[".otf"];
85
+ }
86
+ });
87
+ });
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The Inter faces MPO ships, by weight, named by each OTF's PostScript name
3
+ * (FZ-8572). One table feeds the native face map, the runtime font loader and
4
+ * the expo-font config plugin, so every name tamagui asks for on native is a
5
+ * font the app either embeds or loads.
6
+ *
7
+ * PostScript names, not aliases: the expo-font config plugin embeds a file
8
+ * and iOS registers it under its PostScript name, and Android resolves a
9
+ * family by the file's base name in assets/fonts. @tamagui/font-inter names
10
+ * each file after its PostScript name, so `Inter-SemiBold` is all three.
11
+ */
12
+ export const interFaceNames = {
13
+ 400: "Inter-Regular",
14
+ 500: "Inter-Medium",
15
+ 600: "Inter-SemiBold",
16
+ 700: "Inter-Bold",
17
+ 800: "Inter-ExtraBold",
18
+ } as const;
19
+
20
+ export type InterWeight = keyof typeof interFaceNames;
21
+ export type InterFaceName = (typeof interFaceNames)[InterWeight];
22
+
23
+ /** The OTF file in @tamagui/font-inter for a face. */
24
+ export function interFaceFile(name: InterFaceName): string {
25
+ return `@tamagui/font-inter/otf/${name}.otf`;
26
+ }
@@ -0,0 +1,116 @@
1
+ /**
2
+ * LC-172 FILL-CONTRAST for the stock accent Button (FZ-7697). `<Button accent>`
3
+ * is `theme="accent"` on a `Button` frame, so it paints from whichever theme
4
+ * Tamagui's name walk lands on: the scope's segments from longest to shortest,
5
+ * `<base>_accent_Button` before `<base>_accent`. The house scope finds
6
+ * `<scheme>_accent_Button` (template surface2), a hue scope its
7
+ * `<scheme>_<hue>_accent` solid, and an intent scope falls back to the
8
+ * scheme's. Every scope a Button can render under (each scheme bare, every hue
9
+ * and intent scope) must give its accent Button and its bare accent sub-theme a
10
+ * label that clears WCAG AA 4.5:1 and APCA Lc 60 on its fill.
11
+ */
12
+ import { describe, expect, it, vi } from "vitest";
13
+
14
+ vi.mock("tamagui", () => ({
15
+ createTamagui: vi.fn((config: Record<string, unknown>) => config),
16
+ }));
17
+ vi.mock("./animations/index", () => ({ animations: {} }));
18
+
19
+ import {
20
+ aaTextContrastRatio,
21
+ contrastRatio,
22
+ normalizeToHex,
23
+ relativeLuminance,
24
+ } from "./colorRules";
25
+ import { createDefaultThemeConfig } from "./createDefaultThemeConfig";
26
+ import { resolveAllThemes } from "./dedupeInherited";
27
+ import { apcaContrast, fillLabelLcFloor } from "./fillContrast";
28
+ import {
29
+ boldPreset,
30
+ consolePreset,
31
+ defaultPreset,
32
+ densePreset,
33
+ heroPreset,
34
+ roomyPreset,
35
+ storefrontPreset,
36
+ } from "./presets";
37
+
38
+ const resolved = resolveAllThemes(
39
+ createDefaultThemeConfig().tamagui.themes as unknown as Record<string, Record<string, unknown>>,
40
+ );
41
+
42
+ const scopes = Object.keys(resolved).filter(
43
+ (name) => /^(light|dark)(_[a-z]+)?$/.test(name) && !/_(accent|active)$/.test(name),
44
+ );
45
+
46
+ function accentThemeName(scope: string, componentName?: string) {
47
+ const parts = scope.split("_");
48
+ for (let end = parts.length; end > 0; end--) {
49
+ const base = parts.slice(0, end).join("_");
50
+ const candidates = componentName
51
+ ? [`${base}_accent_${componentName}`, `${base}_accent`]
52
+ : [`${base}_accent`];
53
+ const found = candidates.find((name) => name in resolved);
54
+ if (found) return found;
55
+ }
56
+ return undefined;
57
+ }
58
+
59
+ function measure(name: string) {
60
+ const theme = resolved[name];
61
+ expect(theme, name).toBeDefined();
62
+ const fill = normalizeToHex(String(theme?.background));
63
+ const label = normalizeToHex(String(theme?.color));
64
+ expect(
65
+ fill && label,
66
+ `${name}: ${String(theme?.color)} on ${String(theme?.background)}`,
67
+ ).toBeTruthy();
68
+ return {
69
+ fill: fill as string,
70
+ label: label as string,
71
+ wcag: contrastRatio(relativeLuminance(fill as string), relativeLuminance(label as string)),
72
+ lc: Math.abs(apcaContrast(label as string, fill as string)),
73
+ };
74
+ }
75
+
76
+ describe("LC-172: the stock accent Button's label is readable on its fill (FZ-7697)", () => {
77
+ it("covers both schemes, the hueless house scope and every hue", () => {
78
+ expect(scopes).toEqual(expect.arrayContaining(["light", "dark", "light_blue", "dark_purple"]));
79
+ expect(scopes.length).toBeGreaterThanOrEqual(18);
80
+ });
81
+
82
+ it("covers the scope every catalog preset renders under", () => {
83
+ for (const preset of [
84
+ defaultPreset,
85
+ heroPreset,
86
+ boldPreset,
87
+ densePreset,
88
+ roomyPreset,
89
+ consolePreset,
90
+ storefrontPreset,
91
+ ]) {
92
+ for (const scheme of ["light", "dark"]) {
93
+ const scope = preset.theme ? `${scheme}_${preset.theme}` : scheme;
94
+ expect(scopes, scope).toContain(scope);
95
+ }
96
+ }
97
+ });
98
+
99
+ it("resolves the house scope's accent Button to its own component theme", () => {
100
+ expect(accentThemeName("light", "Button")).toBe("light_accent_Button");
101
+ expect(accentThemeName("dark", "Button")).toBe("dark_accent_Button");
102
+ });
103
+
104
+ for (const scope of scopes) {
105
+ for (const componentName of [undefined, "Button"]) {
106
+ const target = componentName ? `${scope} accent ${componentName}` : `${scope} accent`;
107
+ it(`${target}: the label clears WCAG AA 4.5 and APCA Lc 60 on the fill`, () => {
108
+ const name = accentThemeName(scope, componentName);
109
+ expect(name, `${target} resolves to no theme`).toBeDefined();
110
+ const { fill, label, wcag, lc } = measure(name as string);
111
+ expect(wcag, `${label} on ${fill}`).toBeGreaterThanOrEqual(aaTextContrastRatio);
112
+ expect(lc, `${label} on ${fill}`).toBeGreaterThanOrEqual(fillLabelLcFloor);
113
+ });
114
+ }
115
+ }
116
+ });
@@ -326,6 +326,47 @@ export function holdInkFloor(fill: string, ink: string, floor = aaTextContrastRa
326
326
  return onWhite >= onBlack ? "#ffffff" : "#000000";
327
327
  }
328
328
 
329
+ function mix(hex: string, pole: number, share: number): string {
330
+ return `#${[1, 3, 5]
331
+ .map((offset) => {
332
+ const channel = parseInt(hex.slice(offset, offset + 2), 16);
333
+ return Math.round(channel + (pole - channel) * share)
334
+ .toString(16)
335
+ .padStart(2, "0");
336
+ })
337
+ .join("")}`;
338
+ }
339
+
340
+ /**
341
+ * `hue` moved toward the scheme's ink pole (black on a light page, white on a
342
+ * dark one) by the least amount that clears `floor` on every surface, so the
343
+ * hue survives and only its lightness gives.
344
+ */
345
+ export function holdHueToFloor(
346
+ hue: string,
347
+ surfaces: readonly (string | undefined)[],
348
+ dark: boolean,
349
+ floor: number,
350
+ ): string {
351
+ const hueHex = normalizeToHex(hue);
352
+ const lums = surfaces
353
+ .map((surface) => (surface ? normalizeToHex(surface) : null))
354
+ .filter((hex): hex is string => hex != null)
355
+ .map(relativeLuminance);
356
+ if (!hueHex || lums.length === 0) return hue;
357
+ const clears = (hex: string) => {
358
+ const lum = relativeLuminance(hex);
359
+ return lums.every((surface) => contrastRatio(lum, surface) >= floor);
360
+ };
361
+ if (clears(hueHex)) return hue;
362
+ const pole = dark ? 255 : 0;
363
+ for (let step = 1; step <= 50; step++) {
364
+ const candidate = mix(hueHex, pole, step * 0.02);
365
+ if (clears(candidate)) return candidate;
366
+ }
367
+ return dark ? "#ffffff" : "#000000";
368
+ }
369
+
329
370
  /**
330
371
  * Given a 12-color scale (hex strings), a background step, and a starting
331
372
  * text step, scan towards `preferredDir` for the first step whose contrast
@@ -15,9 +15,11 @@
15
15
  * wash on hover and press. The bar's position carries the affordance.
16
16
  *
17
17
  * Disabled, both tiers drain the fill to transparent and set the ink on
18
- * `$color9`, which clears AA on the page in both schemes on the stock ramp;
19
- * the tinted tier keeps LC-40's `$color6` edge so the drained box still reads
20
- * as a control.
18
+ * `$textMuted`, the secondary ink (LC-152), which clears 7:1 on the page in
19
+ * both schemes. Under a tint it stays neutral: a tint's `$color9` is its
20
+ * hue's solid step, the colour of a live action, so a disabled label inked
21
+ * with it read as available (FZ-8939, LC-40). The tinted tier keeps LC-40's
22
+ * `$color6` edge so the drained box still reads as a control.
21
23
  */
22
24
  export type ControlTier = "tinted" | "plain";
23
25
 
@@ -60,7 +62,7 @@ export function controlTierDisabled(tier: ControlTier): {
60
62
  return {
61
63
  backgroundColor: "transparent",
62
64
  borderColor: tier === "tinted" ? "$color6" : "transparent",
63
- color: "$color9",
65
+ color: "$textMuted",
64
66
  };
65
67
  }
66
68
 
@@ -304,10 +304,17 @@ describe("heading scope categories", () => {
304
304
  try {
305
305
  const fonts = createFontLoader({ inter: true, fonts: [] }).importFonts();
306
306
  expect(Object.keys(fonts).sort()).toEqual(
307
- ["Inter", "InterMedium", "InterSemiBold", "InterBold", "InterExtraBold"].sort(),
307
+ [
308
+ "Inter",
309
+ "Inter-Regular",
310
+ "Inter-Medium",
311
+ "Inter-SemiBold",
312
+ "Inter-Bold",
313
+ "Inter-ExtraBold",
314
+ ].sort(),
308
315
  );
309
316
  for (const font of [defaultHeadingFont, defaultBodyFont]) {
310
- expect(font.face[500]?.normal).toBe("InterMedium");
317
+ expect(font.face[500]?.normal).toBe("Inter-Medium");
311
318
  for (const face of Object.values(font.face)) {
312
319
  expect(fonts).toHaveProperty(face.normal!.split(",")[0]!.trim());
313
320
  }
@@ -4,6 +4,7 @@ import { createInterFont } from "@tamagui/font-inter";
4
4
  // whole `tamagui` module down to `createTamagui`, and this module is on that
5
5
  // spec's import graph.
6
6
  import { createFont, type GenericFont } from "@tamagui/web";
7
+ import { interFaceNames } from "../../fonts/interFaces";
7
8
  import { flooredLineHeight, fontCategoryMetrics } from "../fontCategoryMetrics";
8
9
  import { fontCategoryStacks } from "../fontCategoryStacks";
9
10
  import type { FontCategory } from "../knobs";
@@ -93,14 +94,10 @@ export const bodyFontLineHeights: Record<string, number> = {
93
94
  ...defaultTypeTables.bodyLineHeights,
94
95
  };
95
96
 
96
- /** Shipped Inter faces: 400/500/600/700/800. */
97
- const interFaces = {
98
- 400: { normal: "Inter" },
99
- 500: { normal: "InterMedium" },
100
- 600: { normal: "InterSemiBold" },
101
- 700: { normal: "InterBold" },
102
- 800: { normal: "InterExtraBold" },
103
- } as const;
97
+ /** Shipped Inter faces: 400/500/600/700/800, by PostScript name (FZ-8572). */
98
+ const interFaces = Object.fromEntries(
99
+ Object.entries(interFaceNames).map(([weight, name]) => [weight, { normal: name }]),
100
+ ) as { [W in keyof typeof interFaceNames]: { normal: (typeof interFaceNames)[W] } };
104
101
 
105
102
  /**
106
103
  * Concrete family stacks for each `headingFont`/`bodyFont` category. Alias of
@@ -1,12 +1,12 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { contrastRatio, relativeLuminance } from "./colorRules";
2
+ import { contrastRatio, holdHueToFloor, relativeLuminance } from "./colorRules";
3
3
  import {
4
4
  GLYPH_CONTRAST_FLOOR,
5
5
  glyphTintFallback,
6
- holdHueToFloor,
7
6
  platformSystemTint,
8
7
  resolveGlyphTint,
9
8
  } from "./glyphTint";
9
+ import { resolveActiveTabInk } from "./readableColor";
10
10
 
11
11
  const ratio = (a: string, b: string) => contrastRatio(relativeLuminance(a), relativeLuminance(b));
12
12
 
@@ -51,3 +51,31 @@ describe("LC-176 glyph tint (FZ-8020 r4)", () => {
51
51
  expect(parseInt(held.slice(5, 7), 16)).toBeGreaterThan(parseInt(held.slice(1, 3), 16));
52
52
  });
53
53
  });
54
+
55
+ describe("LC-150 active tab ink (FZ-7995 r3)", () => {
56
+ const light = { dark: false, surfaces: ["#f7f7f7", "#ffffff"], ink: "#111111" };
57
+ const dark = { dark: true, surfaces: ["#111111", "#191919"], ink: "#eeeeee" };
58
+ const chroma = (hex: string) => {
59
+ const rgb = [1, 3, 5].map((offset) => parseInt(hex.slice(offset, offset + 2), 16));
60
+ return Math.max(...rgb) - Math.min(...rgb);
61
+ };
62
+
63
+ it("keeps a hued theme's identity hue", () => {
64
+ expect(resolveActiveTabInk({ ...light, hue: "#c2410c", solid: "#0090ff" })).toBe("#c2410c");
65
+ });
66
+
67
+ for (const cell of [light, dark]) {
68
+ const scheme = cell.dark ? "dark" : "light";
69
+ it(`${scheme}, no hue: takes the accent solid, held to AA on every page surface`, () => {
70
+ const ink = resolveActiveTabInk({ ...cell, hue: undefined, solid: "#0090ff" });
71
+ expect(ink).not.toBe(cell.ink);
72
+ expect(chroma(ink)).toBeGreaterThanOrEqual(0.1 * 255);
73
+ for (const surface of cell.surfaces) expect(ratio(ink, surface)).toBeGreaterThanOrEqual(4.5);
74
+ });
75
+ }
76
+
77
+ it("falls back to the primary ink only when the solid has no hue", () => {
78
+ expect(resolveActiveTabInk({ ...light, hue: undefined, solid: "#6f6f6f" })).toBe("#111111");
79
+ expect(resolveActiveTabInk({ ...light, hue: undefined, solid: undefined })).toBe("#111111");
80
+ });
81
+ });
@@ -1,11 +1,6 @@
1
1
  import { createContext, useContext, useMemo } from "react";
2
2
  import { useThemeName } from "tamagui";
3
- import {
4
- aaTextContrastRatio,
5
- contrastRatio,
6
- normalizeToHex,
7
- relativeLuminance,
8
- } from "./colorRules";
3
+ import { aaTextContrastRatio, holdHueToFloor } from "./colorRules";
9
4
  import { isDarkThemeName } from "./controlTiers";
10
5
  import { useIdentityHue } from "./readableColor";
11
6
 
@@ -47,47 +42,6 @@ const GlyphTintFallbackContext = createContext<GlyphTintFallback>(glyphTintFallb
47
42
  /** Renders a subtree under another fallback, so one Storybook build can compare them. */
48
43
  export const GlyphTintFallbackProvider = GlyphTintFallbackContext.Provider;
49
44
 
50
- function mix(hex: string, pole: number, share: number): string {
51
- return `#${[1, 3, 5]
52
- .map((offset) => {
53
- const channel = parseInt(hex.slice(offset, offset + 2), 16);
54
- return Math.round(channel + (pole - channel) * share)
55
- .toString(16)
56
- .padStart(2, "0");
57
- })
58
- .join("")}`;
59
- }
60
-
61
- /**
62
- * `hue` moved toward the scheme's ink pole (black on a light page, white on a
63
- * dark one) by the least amount that clears `floor` on every surface, so the
64
- * hue survives and only its lightness gives.
65
- */
66
- export function holdHueToFloor(
67
- hue: string,
68
- surfaces: readonly (string | undefined)[],
69
- dark: boolean,
70
- floor: number,
71
- ): string {
72
- const hueHex = normalizeToHex(hue);
73
- const lums = surfaces
74
- .map((surface) => (surface ? normalizeToHex(surface) : null))
75
- .filter((hex): hex is string => hex != null)
76
- .map(relativeLuminance);
77
- if (!hueHex || lums.length === 0) return hue;
78
- const clears = (hex: string) => {
79
- const lum = relativeLuminance(hex);
80
- return lums.every((surface) => contrastRatio(lum, surface) >= floor);
81
- };
82
- if (clears(hueHex)) return hue;
83
- const pole = dark ? 255 : 0;
84
- for (let step = 1; step <= 50; step++) {
85
- const candidate = mix(hueHex, pole, step * 0.02);
86
- if (clears(candidate)) return candidate;
87
- }
88
- return dark ? "#ffffff" : "#000000";
89
- }
90
-
91
45
  export interface ResolveGlyphTintInput {
92
46
  /** The theme's own identity hue on the page, when it has one. */
93
47
  hue: string | undefined;