@ankhorage/surface 7.0.0 → 9.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 (498) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/{surfaceColor.d.ts → constants/surfaceColor.d.ts} +0 -4
  4. package/dist/constants/surfaceColor.d.ts.map +1 -0
  5. package/dist/constants/surfaceColor.js.map +1 -0
  6. package/dist/features/app-bar/adapters/inbound/AppBar.d.ts.map +1 -1
  7. package/dist/features/app-bar/adapters/inbound/AppBar.js +1 -1
  8. package/dist/features/app-bar/adapters/inbound/AppBar.js.map +1 -1
  9. package/dist/features/badge/adapters/inbound/Badge.d.ts.map +1 -1
  10. package/dist/features/badge/adapters/inbound/Badge.js +1 -1
  11. package/dist/features/badge/adapters/inbound/Badge.js.map +1 -1
  12. package/dist/features/button/adapters/inbound/Button.d.ts.map +1 -1
  13. package/dist/features/button/adapters/inbound/Button.js +6 -6
  14. package/dist/features/button/adapters/inbound/Button.js.map +1 -1
  15. package/dist/features/button/adapters/inbound/IconButton.d.ts.map +1 -1
  16. package/dist/features/button/adapters/inbound/IconButton.js +4 -4
  17. package/dist/features/button/adapters/inbound/IconButton.js.map +1 -1
  18. package/dist/features/card/adapters/inbound/Card.d.ts.map +1 -1
  19. package/dist/features/card/adapters/inbound/Card.js +4 -4
  20. package/dist/features/card/adapters/inbound/Card.js.map +1 -1
  21. package/dist/features/font/adapters/inbound/FontProvider.d.ts +4 -0
  22. package/dist/features/font/adapters/inbound/FontProvider.d.ts.map +1 -0
  23. package/dist/features/font/adapters/inbound/FontProvider.js +16 -0
  24. package/dist/features/font/adapters/inbound/FontProvider.js.map +1 -0
  25. package/dist/features/font/adapters/inbound/FontRuntimeContext.d.ts +4 -0
  26. package/dist/features/font/adapters/inbound/FontRuntimeContext.d.ts.map +1 -0
  27. package/dist/features/font/adapters/inbound/FontRuntimeContext.js +9 -0
  28. package/dist/features/font/adapters/inbound/FontRuntimeContext.js.map +1 -0
  29. package/dist/features/font/adapters/inbound/useFontRuntime.d.ts +4 -0
  30. package/dist/features/font/adapters/inbound/useFontRuntime.d.ts.map +1 -0
  31. package/dist/features/font/adapters/inbound/useFontRuntime.js +7 -0
  32. package/dist/features/font/adapters/inbound/useFontRuntime.js.map +1 -0
  33. package/dist/features/font/public.d.ts +3 -0
  34. package/dist/features/font/public.d.ts.map +1 -0
  35. package/dist/features/font/public.js +2 -0
  36. package/dist/features/font/public.js.map +1 -0
  37. package/dist/features/form/checkbox/adapters/inbound/Checkbox.d.ts.map +1 -1
  38. package/dist/features/form/checkbox/adapters/inbound/Checkbox.js +4 -4
  39. package/dist/features/form/checkbox/adapters/inbound/Checkbox.js.map +1 -1
  40. package/dist/features/form/radio/adapters/inbound/Radio.d.ts.map +1 -1
  41. package/dist/features/form/radio/adapters/inbound/Radio.js +4 -4
  42. package/dist/features/form/radio/adapters/inbound/Radio.js.map +1 -1
  43. package/dist/features/form/switch/adapters/inbound/Switch.d.ts.map +1 -1
  44. package/dist/features/form/switch/adapters/inbound/Switch.js +4 -4
  45. package/dist/features/form/switch/adapters/inbound/Switch.js.map +1 -1
  46. package/dist/features/form/text-input/adapters/inbound/TextInput.d.ts.map +1 -1
  47. package/dist/features/form/text-input/adapters/inbound/TextInput.js +1 -1
  48. package/dist/features/form/text-input/adapters/inbound/TextInput.js.map +1 -1
  49. package/dist/features/form/text-input/utils/resolveTextInputPresentation.d.ts +1 -1
  50. package/dist/features/form/text-input/utils/resolveTextInputPresentation.d.ts.map +1 -1
  51. package/dist/features/form/text-input/utils/resolveTextInputPresentation.js.map +1 -1
  52. package/dist/features/icon/adapters/inbound/Icon.d.ts.map +1 -1
  53. package/dist/features/icon/adapters/inbound/Icon.js +2 -2
  54. package/dist/features/icon/adapters/inbound/Icon.js.map +1 -1
  55. package/dist/features/image/adapters/inbound/Image.d.ts.map +1 -1
  56. package/dist/features/image/adapters/inbound/Image.js +1 -1
  57. package/dist/features/image/adapters/inbound/Image.js.map +1 -1
  58. package/dist/features/image/utils/resolveImageStyle.d.ts +1 -1
  59. package/dist/features/image/utils/resolveImageStyle.d.ts.map +1 -1
  60. package/dist/features/image/utils/resolveImageStyle.js +1 -1
  61. package/dist/features/image/utils/resolveImageStyle.js.map +1 -1
  62. package/dist/features/layout/adapters/inbound/Grid.d.ts.map +1 -1
  63. package/dist/features/layout/adapters/inbound/Grid.js +1 -1
  64. package/dist/features/layout/adapters/inbound/Grid.js.map +1 -1
  65. package/dist/features/layout/adapters/inbound/ScrollView.d.ts.map +1 -1
  66. package/dist/features/layout/adapters/inbound/ScrollView.js +1 -1
  67. package/dist/features/layout/adapters/inbound/ScrollView.js.map +1 -1
  68. package/dist/features/layout/adapters/inbound/View.d.ts.map +1 -1
  69. package/dist/features/layout/adapters/inbound/View.js +1 -1
  70. package/dist/features/layout/adapters/inbound/View.js.map +1 -1
  71. package/dist/features/list/adapters/inbound/ListItem.d.ts.map +1 -1
  72. package/dist/features/list/adapters/inbound/ListItem.js +4 -4
  73. package/dist/features/list/adapters/inbound/ListItem.js.map +1 -1
  74. package/dist/features/modal/adapters/inbound/Modal.d.ts.map +1 -1
  75. package/dist/features/modal/adapters/inbound/Modal.js +1 -1
  76. package/dist/features/modal/adapters/inbound/Modal.js.map +1 -1
  77. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.d.ts.map +1 -1
  78. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.js +1 -1
  79. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.js.map +1 -1
  80. package/dist/features/pressable/adapters/inbound/Pressable.d.ts +5 -0
  81. package/dist/features/pressable/adapters/inbound/Pressable.d.ts.map +1 -0
  82. package/dist/features/pressable/adapters/inbound/Pressable.js +48 -0
  83. package/dist/features/pressable/adapters/inbound/Pressable.js.map +1 -0
  84. package/dist/features/pressable/public.d.ts +3 -0
  85. package/dist/features/pressable/public.d.ts.map +1 -0
  86. package/dist/features/pressable/public.js +2 -0
  87. package/dist/features/pressable/public.js.map +1 -0
  88. package/dist/features/surface/adapters/inbound/Surface.d.ts.map +1 -1
  89. package/dist/features/surface/adapters/inbound/Surface.js +1 -1
  90. package/dist/features/surface/adapters/inbound/Surface.js.map +1 -1
  91. package/dist/features/tabs/adapters/inbound/Tab.d.ts.map +1 -1
  92. package/dist/features/tabs/adapters/inbound/Tab.js +1 -1
  93. package/dist/features/tabs/adapters/inbound/Tab.js.map +1 -1
  94. package/dist/features/theme/adapters/inbound/ThemeProvider.d.ts +4 -0
  95. package/dist/features/theme/adapters/inbound/ThemeProvider.d.ts.map +1 -0
  96. package/dist/features/theme/adapters/inbound/ThemeProvider.js +27 -0
  97. package/dist/features/theme/adapters/inbound/ThemeProvider.js.map +1 -0
  98. package/dist/features/theme/adapters/inbound/ThemeRuntimeContext.d.ts +4 -0
  99. package/dist/features/theme/adapters/inbound/ThemeRuntimeContext.d.ts.map +1 -0
  100. package/dist/features/theme/adapters/inbound/ThemeRuntimeContext.js +11 -0
  101. package/dist/features/theme/adapters/inbound/ThemeRuntimeContext.js.map +1 -0
  102. package/dist/features/theme/adapters/inbound/ThemeScope.d.ts +4 -0
  103. package/dist/features/theme/adapters/inbound/ThemeScope.d.ts.map +1 -0
  104. package/dist/features/theme/adapters/inbound/ThemeScope.js +17 -0
  105. package/dist/features/theme/adapters/inbound/ThemeScope.js.map +1 -0
  106. package/dist/features/theme/adapters/inbound/useTheme.d.ts +4 -0
  107. package/dist/features/theme/adapters/inbound/useTheme.d.ts.map +1 -0
  108. package/dist/features/theme/adapters/inbound/useTheme.js +7 -0
  109. package/dist/features/theme/adapters/inbound/useTheme.js.map +1 -0
  110. package/dist/features/theme/application/use-cases/createTheme.d.ts +5 -0
  111. package/dist/features/theme/application/use-cases/createTheme.d.ts.map +1 -0
  112. package/dist/features/theme/application/use-cases/createTheme.js +56 -0
  113. package/dist/features/theme/application/use-cases/createTheme.js.map +1 -0
  114. package/dist/features/theme/constants.d.ts +10 -0
  115. package/dist/features/theme/constants.d.ts.map +1 -0
  116. package/dist/{theme/defaultTokens.js → features/theme/constants.js} +9 -2
  117. package/dist/features/theme/constants.js.map +1 -0
  118. package/dist/{theme → features/theme/domain}/createSurfaceColorDiagnosticCollector.d.ts +1 -1
  119. package/dist/features/theme/domain/createSurfaceColorDiagnosticCollector.d.ts.map +1 -0
  120. package/dist/features/theme/domain/createSurfaceColorDiagnosticCollector.js.map +1 -0
  121. package/dist/{theme → features/theme/domain}/createSurfaceSemanticPolicy.d.ts +1 -1
  122. package/dist/features/theme/domain/createSurfaceSemanticPolicy.d.ts.map +1 -0
  123. package/dist/{theme → features/theme/domain}/createSurfaceSemanticPolicy.js +1 -1
  124. package/dist/features/theme/domain/createSurfaceSemanticPolicy.js.map +1 -0
  125. package/dist/features/theme/domain/generatePalette.d.ts +10 -0
  126. package/dist/features/theme/domain/generatePalette.d.ts.map +1 -0
  127. package/dist/{theme/colorEngine.js → features/theme/domain/generatePalette.js} +2 -10
  128. package/dist/features/theme/domain/generatePalette.js.map +1 -0
  129. package/dist/{theme → features/theme/domain}/resolveRoleSemantics.d.ts +1 -1
  130. package/dist/features/theme/domain/resolveRoleSemantics.d.ts.map +1 -0
  131. package/dist/{theme → features/theme/domain}/resolveRoleSemantics.js +1 -1
  132. package/dist/features/theme/domain/resolveRoleSemantics.js.map +1 -0
  133. package/dist/features/theme/domain/resolveSemanticColors.d.ts +4 -0
  134. package/dist/features/theme/domain/resolveSemanticColors.d.ts.map +1 -0
  135. package/dist/features/theme/domain/resolveSemanticColors.js +10 -0
  136. package/dist/features/theme/domain/resolveSemanticColors.js.map +1 -0
  137. package/dist/{theme → features/theme/domain}/resolveSurfaceSemanticModel.d.ts +1 -1
  138. package/dist/features/theme/domain/resolveSurfaceSemanticModel.d.ts.map +1 -0
  139. package/dist/features/theme/domain/resolveSurfaceSemanticModel.js.map +1 -0
  140. package/dist/features/theme/public.d.ts +3 -0
  141. package/dist/features/theme/public.d.ts.map +1 -0
  142. package/dist/features/theme/public.js +2 -0
  143. package/dist/features/theme/public.js.map +1 -0
  144. package/dist/features/theme/runtime.d.ts +5 -0
  145. package/dist/features/theme/runtime.d.ts.map +1 -0
  146. package/dist/features/theme/runtime.js +4 -0
  147. package/dist/features/theme/runtime.js.map +1 -0
  148. package/dist/{theme → features/theme/utils}/resolveGlobalTokens.d.ts +1 -1
  149. package/dist/features/theme/utils/resolveGlobalTokens.d.ts.map +1 -0
  150. package/dist/{theme → features/theme/utils}/resolveGlobalTokens.js +1 -1
  151. package/dist/features/theme/utils/resolveGlobalTokens.js.map +1 -0
  152. package/dist/{theme → features/theme/utils}/resolveHeadingTokenOverrides.d.ts +1 -1
  153. package/dist/features/theme/utils/resolveHeadingTokenOverrides.d.ts.map +1 -0
  154. package/dist/features/theme/utils/resolveHeadingTokenOverrides.js.map +1 -0
  155. package/dist/features/theme/utils/resolveNumericTokenOverrides.d.ts.map +1 -0
  156. package/dist/features/theme/utils/resolveNumericTokenOverrides.js.map +1 -0
  157. package/dist/{theme → features/theme/utils}/resolveToken.d.ts +2 -8
  158. package/dist/features/theme/utils/resolveToken.d.ts.map +1 -0
  159. package/dist/features/theme/utils/resolveToken.js +10 -0
  160. package/dist/features/theme/utils/resolveToken.js.map +1 -0
  161. package/dist/{theme → features/theme/utils}/resolveWeightTokenOverrides.d.ts +1 -1
  162. package/dist/features/theme/utils/resolveWeightTokenOverrides.d.ts.map +1 -0
  163. package/dist/{theme → features/theme/utils}/resolveWeightTokenOverrides.js +3 -5
  164. package/dist/features/theme/utils/resolveWeightTokenOverrides.js.map +1 -0
  165. package/dist/features/toast/adapters/inbound/Toast.d.ts.map +1 -1
  166. package/dist/features/toast/adapters/inbound/Toast.js +1 -1
  167. package/dist/features/toast/adapters/inbound/Toast.js.map +1 -1
  168. package/dist/features/tooltip/adapters/inbound/Tooltip.d.ts.map +1 -1
  169. package/dist/features/tooltip/adapters/inbound/Tooltip.js +1 -1
  170. package/dist/features/tooltip/adapters/inbound/Tooltip.js.map +1 -1
  171. package/dist/features/typography/adapters/inbound/Heading.d.ts +2 -2
  172. package/dist/features/typography/adapters/inbound/Heading.d.ts.map +1 -1
  173. package/dist/features/typography/adapters/inbound/Heading.js +4 -20
  174. package/dist/features/typography/adapters/inbound/Heading.js.map +1 -1
  175. package/dist/features/typography/adapters/inbound/Text.d.ts +1 -1
  176. package/dist/features/typography/adapters/inbound/Text.d.ts.map +1 -1
  177. package/dist/features/typography/adapters/inbound/Text.js +3 -20
  178. package/dist/features/typography/adapters/inbound/Text.js.map +1 -1
  179. package/dist/features/typography/utils/resolveHeadingTextStyle.d.ts +2 -2
  180. package/dist/features/typography/utils/resolveHeadingTextStyle.d.ts.map +1 -1
  181. package/dist/features/typography/utils/resolveHeadingTextStyle.js.map +1 -1
  182. package/dist/index.d.ts +11 -12
  183. package/dist/index.d.ts.map +1 -1
  184. package/dist/index.js +5 -7
  185. package/dist/index.js.map +1 -1
  186. package/dist/internal/resolvers/resolveControlSize.d.ts +1 -1
  187. package/dist/internal/resolvers/resolveControlSize.js.map +1 -1
  188. package/dist/internal/resolvers/resolveFieldPresentation.d.ts +1 -1
  189. package/dist/internal/resolvers/resolveFieldPresentation.d.ts.map +1 -1
  190. package/dist/internal/resolvers/resolveFieldPresentation.js.map +1 -1
  191. package/dist/internal/resolvers/resolveIconSize.d.ts +1 -1
  192. package/dist/internal/resolvers/resolveIconSize.js.map +1 -1
  193. package/dist/internal/resolvers/resolveInteractiveColors.d.ts +2 -2
  194. package/dist/internal/resolvers/resolveInteractiveColors.d.ts.map +1 -1
  195. package/dist/internal/resolvers/resolveInteractiveColors.js.map +1 -1
  196. package/dist/internal/resolvers/resolveSelectionControlColors.d.ts +2 -2
  197. package/dist/internal/resolvers/resolveSelectionControlColors.d.ts.map +1 -1
  198. package/dist/internal/resolvers/resolveSelectionControlColors.js.map +1 -1
  199. package/dist/internal/resolvers/resolveSurfaceColor.d.ts +2 -2
  200. package/dist/internal/resolvers/resolveSurfaceColor.d.ts.map +1 -1
  201. package/dist/internal/resolvers/resolveSurfaceColor.js.map +1 -1
  202. package/dist/internal/resolvers/resolveTextColor.d.ts +2 -2
  203. package/dist/internal/resolvers/resolveTextColor.d.ts.map +1 -1
  204. package/dist/internal/resolvers/resolveTextColor.js.map +1 -1
  205. package/dist/internal/resolvers/resolveTextStyles.d.ts +1 -1
  206. package/dist/internal/resolvers/resolveTextStyles.js.map +1 -1
  207. package/dist/types/accordion.d.ts +1 -1
  208. package/dist/types/accordion.d.ts.map +1 -1
  209. package/dist/types/accordion.js.map +1 -1
  210. package/dist/types/badge.d.ts +1 -1
  211. package/dist/types/badge.d.ts.map +1 -1
  212. package/dist/types/badge.js.map +1 -1
  213. package/dist/types/button.d.ts +4 -4
  214. package/dist/types/button.d.ts.map +1 -1
  215. package/dist/types/button.js.map +1 -1
  216. package/dist/types/checkbox.d.ts +3 -3
  217. package/dist/types/checkbox.d.ts.map +1 -1
  218. package/dist/types/checkbox.js.map +1 -1
  219. package/dist/types/font.d.ts +13 -0
  220. package/dist/types/font.d.ts.map +1 -0
  221. package/dist/types/font.js +2 -0
  222. package/dist/types/font.js.map +1 -0
  223. package/dist/types/icon.d.ts +1 -1
  224. package/dist/types/icon.d.ts.map +1 -1
  225. package/dist/types/icon.js.map +1 -1
  226. package/dist/types/image.d.ts +1 -1
  227. package/dist/types/image.d.ts.map +1 -1
  228. package/dist/types/image.js.map +1 -1
  229. package/dist/types/interactionPolicy.d.ts.map +1 -0
  230. package/dist/types/interactionPolicy.js.map +1 -0
  231. package/dist/types/layout.d.ts +1 -1
  232. package/dist/types/layout.d.ts.map +1 -1
  233. package/dist/types/layout.js.map +1 -1
  234. package/dist/types/list.d.ts +1 -1
  235. package/dist/types/list.d.ts.map +1 -1
  236. package/dist/types/list.js.map +1 -1
  237. package/dist/types/modal.d.ts +1 -1
  238. package/dist/types/modal.d.ts.map +1 -1
  239. package/dist/types/modal.js.map +1 -1
  240. package/dist/types/popover.d.ts +1 -1
  241. package/dist/types/popover.d.ts.map +1 -1
  242. package/dist/types/popover.js.map +1 -1
  243. package/dist/types/popoverMenu.d.ts +1 -1
  244. package/dist/types/popoverMenu.d.ts.map +1 -1
  245. package/dist/types/popoverMenu.js.map +1 -1
  246. package/dist/{primitives/button-base/types.d.ts → types/pressable.d.ts} +5 -5
  247. package/dist/types/pressable.d.ts.map +1 -0
  248. package/dist/types/pressable.js +2 -0
  249. package/dist/types/pressable.js.map +1 -0
  250. package/dist/types/radio.d.ts +3 -3
  251. package/dist/types/radio.d.ts.map +1 -1
  252. package/dist/types/radio.js.map +1 -1
  253. package/dist/types/surfaceColor.d.ts +6 -0
  254. package/dist/types/surfaceColor.d.ts.map +1 -0
  255. package/dist/types/surfaceColor.js +2 -0
  256. package/dist/types/surfaceColor.js.map +1 -0
  257. package/dist/types/switch.d.ts +3 -3
  258. package/dist/types/switch.d.ts.map +1 -1
  259. package/dist/types/switch.js.map +1 -1
  260. package/dist/types/tabs.d.ts +1 -1
  261. package/dist/types/tabs.d.ts.map +1 -1
  262. package/dist/types/tabs.js.map +1 -1
  263. package/dist/types/text-input.d.ts +1 -1
  264. package/dist/types/text-input.d.ts.map +1 -1
  265. package/dist/types/text-input.js.map +1 -1
  266. package/dist/{theme/types.d.ts → types/theme.d.ts} +19 -3
  267. package/dist/types/theme.d.ts.map +1 -0
  268. package/dist/types/theme.js +2 -0
  269. package/dist/types/theme.js.map +1 -0
  270. package/dist/types/toast.d.ts +2 -2
  271. package/dist/types/toast.d.ts.map +1 -1
  272. package/dist/types/toast.js.map +1 -1
  273. package/dist/types/tooltip.d.ts +1 -1
  274. package/dist/types/tooltip.d.ts.map +1 -1
  275. package/dist/types/tooltip.js.map +1 -1
  276. package/dist/types/typography.d.ts +1 -1
  277. package/dist/types/typography.d.ts.map +1 -1
  278. package/dist/types/typography.js.map +1 -1
  279. package/dist/utils/resolveSpacing.d.ts +1 -1
  280. package/dist/utils/resolveSpacing.d.ts.map +1 -1
  281. package/dist/utils/resolveSpacing.js +1 -1
  282. package/dist/utils/resolveSpacing.js.map +1 -1
  283. package/dist/utils/resolveViewStyles.d.ts +1 -1
  284. package/dist/utils/resolveViewStyles.d.ts.map +1 -1
  285. package/dist/utils/resolveViewStyles.js +1 -1
  286. package/dist/utils/resolveViewStyles.js.map +1 -1
  287. package/package.json +8 -7
  288. package/src/constants/surfaceColor.test.ts +18 -0
  289. package/src/{surfaceColor.ts → constants/surfaceColor.ts} +0 -5
  290. package/src/features/app-bar/adapters/inbound/AppBar.tsx +1 -1
  291. package/src/features/badge/adapters/inbound/Badge.tsx +1 -1
  292. package/src/features/button/adapters/inbound/Button.tsx +8 -8
  293. package/src/features/button/adapters/inbound/IconButton.tsx +4 -4
  294. package/src/features/card/adapters/inbound/Card.tsx +4 -4
  295. package/src/features/font/adapters/inbound/FontProvider.tsx +27 -0
  296. package/src/features/font/adapters/inbound/FontRuntimeContext.tsx +12 -0
  297. package/src/features/font/adapters/inbound/useFontRuntime.ts +9 -0
  298. package/src/features/font/public.ts +2 -0
  299. package/src/features/form/checkbox/adapters/inbound/Checkbox.tsx +7 -7
  300. package/src/features/form/radio/adapters/inbound/Radio.tsx +7 -7
  301. package/src/features/form/switch/adapters/inbound/Switch.tsx +4 -4
  302. package/src/features/form/text-input/adapters/inbound/TextInput.tsx +1 -1
  303. package/src/features/form/text-input/utils/resolveTextInputPresentation.ts +1 -1
  304. package/src/features/icon/adapters/inbound/Icon.tsx +2 -2
  305. package/src/features/image/adapters/inbound/Image.tsx +1 -1
  306. package/src/features/image/utils/resolveImageProps.test.ts +1 -1
  307. package/src/features/image/utils/resolveImageStyle.ts +2 -2
  308. package/src/features/layout/adapters/inbound/Grid.tsx +1 -1
  309. package/src/features/layout/adapters/inbound/ScrollView.tsx +1 -1
  310. package/src/features/layout/adapters/inbound/View.tsx +1 -1
  311. package/src/features/list/adapters/inbound/ListItem.tsx +5 -5
  312. package/src/features/modal/adapters/inbound/Modal.tsx +1 -1
  313. package/src/features/popover-menu/adapters/inbound/PopoverMenu.tsx +1 -1
  314. package/src/{primitives/button-base/ButtonBase.tsx → features/pressable/adapters/inbound/Pressable.tsx} +45 -31
  315. package/src/features/pressable/public.ts +2 -0
  316. package/src/features/surface/adapters/inbound/Surface.tsx +1 -1
  317. package/src/features/tabs/adapters/inbound/Tab.tsx +1 -1
  318. package/src/features/theme/adapters/inbound/ThemeProvider.tsx +46 -0
  319. package/src/features/theme/adapters/inbound/ThemeRuntimeContext.tsx +14 -0
  320. package/src/features/theme/adapters/inbound/ThemeScope.test.tsx +52 -0
  321. package/src/features/theme/adapters/inbound/ThemeScope.tsx +29 -0
  322. package/src/features/theme/adapters/inbound/useTheme.ts +9 -0
  323. package/src/features/theme/application/use-cases/createTheme.ts +71 -0
  324. package/src/{theme → features/theme/application/use-cases}/createThemeOverrides.test.ts +8 -9
  325. package/src/{theme → features/theme/application/use-cases}/createThemeValidation.test.ts +4 -2
  326. package/src/features/theme/constants.ts +68 -0
  327. package/src/{theme → features/theme/domain}/createSurfaceColorDiagnosticCollector.ts +4 -1
  328. package/src/{theme → features/theme/domain}/createSurfaceSemanticPolicy.ts +2 -2
  329. package/src/features/theme/domain/generatePalette.test.ts +294 -0
  330. package/src/{theme/colorEngine.ts → features/theme/domain/generatePalette.ts} +3 -30
  331. package/src/{theme → features/theme/domain}/inverseSemantics.test.ts +1 -1
  332. package/src/{theme → features/theme/domain}/resolveRoleSemantics.ts +2 -2
  333. package/src/features/theme/domain/resolveSemanticColors.ts +23 -0
  334. package/src/{theme → features/theme/domain}/resolveSurfaceSemanticModel.ts +4 -4
  335. package/src/{theme → features/theme}/public.test.ts +1 -1
  336. package/src/features/theme/public.ts +18 -0
  337. package/src/features/theme/runtime.test.ts +13 -0
  338. package/src/features/theme/runtime.ts +4 -0
  339. package/src/{theme → features/theme/utils}/resolveGlobalTokens.ts +2 -2
  340. package/src/{theme → features/theme/utils}/resolveHeadingTokenOverrides.ts +1 -1
  341. package/src/features/theme/utils/resolveToken.ts +16 -0
  342. package/src/{theme → features/theme/utils}/resolveWeightTokenOverrides.ts +12 -12
  343. package/src/features/toast/adapters/inbound/Toast.tsx +3 -3
  344. package/src/features/tooltip/adapters/inbound/Tooltip.tsx +1 -1
  345. package/src/features/typography/adapters/inbound/Heading.tsx +3 -30
  346. package/src/features/typography/adapters/inbound/Text.tsx +3 -23
  347. package/src/features/typography/utils/resolveHeadingTextStyle.test.ts +1 -1
  348. package/src/features/typography/utils/resolveHeadingTextStyle.ts +2 -2
  349. package/src/index.test.ts +13 -9
  350. package/src/index.ts +32 -17
  351. package/src/internal/resolvers/resolveControlSize.test.ts +1 -1
  352. package/src/internal/resolvers/resolveControlSize.ts +1 -1
  353. package/src/internal/resolvers/resolveFieldPresentation.ts +1 -1
  354. package/src/internal/resolvers/resolveIconSize.ts +1 -1
  355. package/src/internal/resolvers/resolveInteractiveColors.test.ts +1 -1
  356. package/src/internal/resolvers/resolveInteractiveColors.ts +2 -2
  357. package/src/internal/resolvers/resolveSelectionControlColors.test.ts +1 -1
  358. package/src/internal/resolvers/resolveSelectionControlColors.ts +2 -2
  359. package/src/internal/resolvers/resolveSurfaceColor.test.ts +1 -1
  360. package/src/internal/resolvers/resolveSurfaceColor.ts +2 -2
  361. package/src/internal/resolvers/resolveTextColor.test.ts +1 -1
  362. package/src/internal/resolvers/resolveTextColor.ts +2 -2
  363. package/src/internal/resolvers/resolveTextStyles.test.ts +1 -1
  364. package/src/internal/resolvers/resolveTextStyles.ts +1 -1
  365. package/src/structureOwnership.test.ts +16 -0
  366. package/src/types/accordion.ts +1 -1
  367. package/src/types/badge.ts +1 -1
  368. package/src/types/button.ts +4 -4
  369. package/src/types/checkbox.ts +3 -3
  370. package/src/types/font.ts +14 -0
  371. package/src/types/icon.ts +1 -1
  372. package/src/types/image.ts +1 -1
  373. package/src/types/interactionPolicy.test.ts +30 -0
  374. package/src/types/layout.ts +1 -1
  375. package/src/types/list.ts +1 -1
  376. package/src/types/modal.ts +1 -1
  377. package/src/types/popover.ts +1 -1
  378. package/src/types/popoverMenu.ts +1 -1
  379. package/src/{primitives/button-base/types.ts → types/pressable.ts} +4 -4
  380. package/src/types/radio.ts +3 -3
  381. package/src/types/surfaceColor.test.ts +18 -0
  382. package/src/types/surfaceColor.ts +11 -0
  383. package/src/types/switch.ts +3 -3
  384. package/src/types/tabs.ts +1 -1
  385. package/src/types/text-input.ts +1 -1
  386. package/src/{theme/types.ts → types/theme.ts} +22 -13
  387. package/src/types/toast.ts +2 -2
  388. package/src/types/tooltip.ts +1 -1
  389. package/src/types/typography.ts +1 -1
  390. package/src/utils/resolveSpacing.ts +2 -2
  391. package/src/utils/resolveViewStyles.test.ts +1 -1
  392. package/src/utils/resolveViewStyles.ts +2 -2
  393. package/src/webAcceptance.test.tsx +1 -1
  394. package/dist/context/FontContext.d.ts +0 -20
  395. package/dist/context/FontContext.d.ts.map +0 -1
  396. package/dist/context/FontContext.js +0 -27
  397. package/dist/context/FontContext.js.map +0 -1
  398. package/dist/context/TranslationContext.d.ts +0 -22
  399. package/dist/context/TranslationContext.d.ts.map +0 -1
  400. package/dist/context/TranslationContext.js +0 -25
  401. package/dist/context/TranslationContext.js.map +0 -1
  402. package/dist/interactionPolicy.d.ts.map +0 -1
  403. package/dist/interactionPolicy.js.map +0 -1
  404. package/dist/primitives/button-base/ButtonBase.d.ts +0 -5
  405. package/dist/primitives/button-base/ButtonBase.d.ts.map +0 -1
  406. package/dist/primitives/button-base/ButtonBase.js +0 -42
  407. package/dist/primitives/button-base/ButtonBase.js.map +0 -1
  408. package/dist/primitives/button-base/index.d.ts +0 -3
  409. package/dist/primitives/button-base/index.d.ts.map +0 -1
  410. package/dist/primitives/button-base/index.js +0 -2
  411. package/dist/primitives/button-base/index.js.map +0 -1
  412. package/dist/primitives/button-base/types.d.ts.map +0 -1
  413. package/dist/primitives/button-base/types.js +0 -2
  414. package/dist/primitives/button-base/types.js.map +0 -1
  415. package/dist/surfaceColor.d.ts.map +0 -1
  416. package/dist/surfaceColor.js.map +0 -1
  417. package/dist/theme/ThemeContext.d.ts +0 -27
  418. package/dist/theme/ThemeContext.d.ts.map +0 -1
  419. package/dist/theme/ThemeContext.js +0 -59
  420. package/dist/theme/ThemeContext.js.map +0 -1
  421. package/dist/theme/colorEngine.d.ts +0 -16
  422. package/dist/theme/colorEngine.d.ts.map +0 -1
  423. package/dist/theme/colorEngine.js.map +0 -1
  424. package/dist/theme/createSurfaceColorDiagnosticCollector.d.ts.map +0 -1
  425. package/dist/theme/createSurfaceColorDiagnosticCollector.js.map +0 -1
  426. package/dist/theme/createSurfaceSemanticPolicy.d.ts.map +0 -1
  427. package/dist/theme/createSurfaceSemanticPolicy.js.map +0 -1
  428. package/dist/theme/createTheme.d.ts +0 -5
  429. package/dist/theme/createTheme.d.ts.map +0 -1
  430. package/dist/theme/createTheme.js +0 -49
  431. package/dist/theme/createTheme.js.map +0 -1
  432. package/dist/theme/defaultTokens.d.ts +0 -3
  433. package/dist/theme/defaultTokens.d.ts.map +0 -1
  434. package/dist/theme/defaultTokens.js.map +0 -1
  435. package/dist/theme/index.d.ts +0 -3
  436. package/dist/theme/index.d.ts.map +0 -1
  437. package/dist/theme/index.js +0 -3
  438. package/dist/theme/index.js.map +0 -1
  439. package/dist/theme/public.d.ts +0 -5
  440. package/dist/theme/public.d.ts.map +0 -1
  441. package/dist/theme/public.js +0 -5
  442. package/dist/theme/public.js.map +0 -1
  443. package/dist/theme/resolveGlobalTokens.d.ts.map +0 -1
  444. package/dist/theme/resolveGlobalTokens.js.map +0 -1
  445. package/dist/theme/resolveHeadingTokenOverrides.d.ts.map +0 -1
  446. package/dist/theme/resolveHeadingTokenOverrides.js.map +0 -1
  447. package/dist/theme/resolveNumericTokenOverrides.d.ts.map +0 -1
  448. package/dist/theme/resolveNumericTokenOverrides.js.map +0 -1
  449. package/dist/theme/resolveRoleSemantics.d.ts.map +0 -1
  450. package/dist/theme/resolveRoleSemantics.js.map +0 -1
  451. package/dist/theme/resolveSurfaceSemanticModel.d.ts.map +0 -1
  452. package/dist/theme/resolveSurfaceSemanticModel.js.map +0 -1
  453. package/dist/theme/resolveToken.d.ts.map +0 -1
  454. package/dist/theme/resolveToken.js +0 -19
  455. package/dist/theme/resolveToken.js.map +0 -1
  456. package/dist/theme/resolveWeightTokenOverrides.d.ts.map +0 -1
  457. package/dist/theme/resolveWeightTokenOverrides.js.map +0 -1
  458. package/dist/theme/surfaceColorPolicy.d.ts +0 -8
  459. package/dist/theme/surfaceColorPolicy.d.ts.map +0 -1
  460. package/dist/theme/surfaceColorPolicy.js +0 -8
  461. package/dist/theme/surfaceColorPolicy.js.map +0 -1
  462. package/dist/theme/types.d.ts.map +0 -1
  463. package/dist/theme/types.js +0 -2
  464. package/dist/theme/types.js.map +0 -1
  465. package/dist/utils/deepEqual.d.ts +0 -6
  466. package/dist/utils/deepEqual.d.ts.map +0 -1
  467. package/dist/utils/deepEqual.js +0 -36
  468. package/dist/utils/deepEqual.js.map +0 -1
  469. package/dist/utils/deepMerge.d.ts +0 -6
  470. package/dist/utils/deepMerge.d.ts.map +0 -1
  471. package/dist/utils/deepMerge.js +0 -26
  472. package/dist/utils/deepMerge.js.map +0 -1
  473. package/src/context/FontContext.tsx +0 -59
  474. package/src/context/TranslationContext.tsx +0 -50
  475. package/src/interactionPolicy.test.ts +0 -86
  476. package/src/primitives/button-base/index.ts +0 -2
  477. package/src/surfaceColor.test.ts +0 -44
  478. package/src/theme/ThemeContext.tsx +0 -94
  479. package/src/theme/colorEngine.test.ts +0 -302
  480. package/src/theme/createTheme.ts +0 -60
  481. package/src/theme/defaultTokens.ts +0 -61
  482. package/src/theme/index.ts +0 -2
  483. package/src/theme/public.ts +0 -4
  484. package/src/theme/resolveToken.ts +0 -32
  485. package/src/theme/surfaceColorPolicy.ts +0 -7
  486. package/src/utils/deepEqual.ts +0 -34
  487. package/src/utils/deepMerge.test.ts +0 -113
  488. package/src/utils/deepMerge.ts +0 -29
  489. /package/dist/{surfaceColor.js → constants/surfaceColor.js} +0 -0
  490. /package/dist/{theme → features/theme/domain}/createSurfaceColorDiagnosticCollector.js +0 -0
  491. /package/dist/{theme → features/theme/domain}/resolveSurfaceSemanticModel.js +0 -0
  492. /package/dist/{theme → features/theme/utils}/resolveHeadingTokenOverrides.js +0 -0
  493. /package/dist/{theme → features/theme/utils}/resolveNumericTokenOverrides.d.ts +0 -0
  494. /package/dist/{theme → features/theme/utils}/resolveNumericTokenOverrides.js +0 -0
  495. /package/dist/{interactionPolicy.d.ts → types/interactionPolicy.d.ts} +0 -0
  496. /package/dist/{interactionPolicy.js → types/interactionPolicy.js} +0 -0
  497. /package/src/{theme → features/theme/utils}/resolveNumericTokenOverrides.ts +0 -0
  498. /package/src/{interactionPolicy.ts → types/interactionPolicy.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  import type React from 'react';
2
- import type { InteractionPolicy } from '../interactionPolicy';
2
+ import type { InteractionPolicy } from './interactionPolicy';
3
3
  export interface TooltipProps {
4
4
  children?: React.ReactNode;
5
5
  content?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/types/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/types/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/types/tooltip.ts"],"names":[],"mappings":"","sourcesContent":["import type React from 'react';\n\nimport type { InteractionPolicy } from '../interactionPolicy';\n\nexport interface TooltipProps {\n children?: React.ReactNode;\n content?: React.ReactNode;\n delay?: number;\n interactionPolicy?: InteractionPolicy;\n placement?: 'top' | 'bottom';\n testID?: string;\n}\n"]}
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/types/tooltip.ts"],"names":[],"mappings":"","sourcesContent":["import type React from 'react';\n\nimport type { InteractionPolicy } from './interactionPolicy';\n\nexport interface TooltipProps {\n children?: React.ReactNode;\n content?: React.ReactNode;\n delay?: number;\n interactionPolicy?: InteractionPolicy;\n placement?: 'top' | 'bottom';\n testID?: string;\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import type { TextStyle } from 'react-native';
3
3
  import type { TextVariant, TextWeight } from '../internal/resolvers/resolveTextStyles';
4
- import type { SurfaceColor, SurfaceEmphasis } from '../surfaceColor';
4
+ import type { SurfaceColor, SurfaceEmphasis } from './surfaceColor';
5
5
  export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
6
6
  export interface HeadingProps {
7
7
  text?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../src/types/typography.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../src/types/typography.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEpE,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"typography.js","sourceRoot":"","sources":["../../src/types/typography.ts"],"names":[],"mappings":"","sourcesContent":["import type React from 'react';\nimport type { TextStyle } from 'react-native';\n\nimport type { TextVariant, TextWeight } from '../internal/resolvers/resolveTextStyles';\nimport type { SurfaceColor, SurfaceEmphasis } from '../surfaceColor';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface HeadingProps {\n text?: string;\n children?: React.ReactNode;\n level?: HeadingLevel;\n align?: 'auto' | 'left' | 'right' | 'center' | 'justify';\n color?: SurfaceColor;\n emphasis?: SurfaceEmphasis;\n numberOfLines?: number;\n i18nKey?: string;\n testID?: string;\n}\n\nexport interface TextProps {\n children?: React.ReactNode;\n i18nKey?: string;\n variant?: TextVariant;\n emphasis?: SurfaceEmphasis;\n color?: SurfaceColor;\n align?: TextStyle['textAlign'];\n weight?: TextWeight;\n italic?: boolean;\n numberOfLines?: number;\n testID?: string;\n}\n"]}
1
+ {"version":3,"file":"typography.js","sourceRoot":"","sources":["../../src/types/typography.ts"],"names":[],"mappings":"","sourcesContent":["import type React from 'react';\nimport type { TextStyle } from 'react-native';\n\nimport type { TextVariant, TextWeight } from '../internal/resolvers/resolveTextStyles';\nimport type { SurfaceColor, SurfaceEmphasis } from './surfaceColor';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface HeadingProps {\n text?: string;\n children?: React.ReactNode;\n level?: HeadingLevel;\n align?: 'auto' | 'left' | 'right' | 'center' | 'justify';\n color?: SurfaceColor;\n emphasis?: SurfaceEmphasis;\n numberOfLines?: number;\n i18nKey?: string;\n testID?: string;\n}\n\nexport interface TextProps {\n children?: React.ReactNode;\n i18nKey?: string;\n variant?: TextVariant;\n emphasis?: SurfaceEmphasis;\n color?: SurfaceColor;\n align?: TextStyle['textAlign'];\n weight?: TextWeight;\n italic?: boolean;\n numberOfLines?: number;\n testID?: string;\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { SurfaceTheme } from '../theme/types';
2
1
  import type { SpaceValue } from '../types/layout';
2
+ import type { SurfaceTheme } from '../types/theme';
3
3
  /*** Resolves a numeric spacing value or a Surface spacing token. */
4
4
  export declare function resolveSpacing(theme: SurfaceTheme, value: SpaceValue | undefined): number | undefined;
5
5
  //# sourceMappingURL=resolveSpacing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveSpacing.d.ts","sourceRoot":"","sources":["../../src/utils/resolveSpacing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,oEAAoE;AACpE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,MAAM,GAAG,SAAS,CAEpB"}
1
+ {"version":3,"file":"resolveSpacing.d.ts","sourceRoot":"","sources":["../../src/utils/resolveSpacing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,oEAAoE;AACpE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,MAAM,GAAG,SAAS,CAEpB"}
@@ -1,4 +1,4 @@
1
- import { resolveToken } from '../theme/resolveToken';
1
+ import { resolveToken } from '../features/theme/utils/resolveToken';
2
2
  /*** Resolves a numeric spacing value or a Surface spacing token. */
3
3
  export function resolveSpacing(theme, value) {
4
4
  return resolveToken(theme.spacing, value);
@@ -1 +1 @@
1
- {"version":3,"file":"resolveSpacing.js","sourceRoot":"","sources":["../../src/utils/resolveSpacing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAC5B,KAAmB,EACnB,KAA6B;IAE7B,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["import { resolveToken } from '../theme/resolveToken';\nimport type { SurfaceTheme } from '../theme/types';\nimport type { SpaceValue } from '../types/layout';\n\n/*** Resolves a numeric spacing value or a Surface spacing token. */\nexport function resolveSpacing(\n theme: SurfaceTheme,\n value: SpaceValue | undefined,\n): number | undefined {\n return resolveToken(theme.spacing, value);\n}\n"]}
1
+ {"version":3,"file":"resolveSpacing.js","sourceRoot":"","sources":["../../src/utils/resolveSpacing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAIpE,oEAAoE;AACpE,MAAM,UAAU,cAAc,CAC5B,KAAmB,EACnB,KAA6B;IAE7B,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["import { resolveToken } from '../features/theme/utils/resolveToken';\nimport type { SpaceValue } from '../types/layout';\nimport type { SurfaceTheme } from '../types/theme';\n\n/*** Resolves a numeric spacing value or a Surface spacing token. */\nexport function resolveSpacing(\n theme: SurfaceTheme,\n value: SpaceValue | undefined,\n): number | undefined {\n return resolveToken(theme.spacing, value);\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { ViewStyle } from 'react-native';
2
2
  import type { Breakpoint } from '../core/responsive/types';
3
- import type { SurfaceTheme } from '../theme/types';
4
3
  import type { ViewStyleProps } from '../types/layout';
4
+ import type { SurfaceTheme } from '../types/theme';
5
5
  /*** Resolves responsive Surface View style props into one React Native view style. */
6
6
  export declare function resolveViewStyles(theme: SurfaceTheme, breakpoint: Breakpoint, props: ViewStyleProps): ViewStyle;
7
7
  //# sourceMappingURL=resolveViewStyles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveViewStyles.d.ts","sourceRoot":"","sources":["../../src/utils/resolveViewStyles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGlE,sFAAsF;AACtF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,cAAc,GACpB,SAAS,CAQX"}
1
+ {"version":3,"file":"resolveViewStyles.d.ts","sourceRoot":"","sources":["../../src/utils/resolveViewStyles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,sFAAsF;AACtF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,cAAc,GACpB,SAAS,CAQX"}
@@ -1,5 +1,5 @@
1
1
  import { resolveResponsive } from '../core/responsive/resolve';
2
- import { resolveToken } from '../theme/resolveToken';
2
+ import { resolveToken } from '../features/theme/utils/resolveToken';
3
3
  import { resolveSpacing } from './resolveSpacing';
4
4
  /*** Resolves responsive Surface View style props into one React Native view style. */
5
5
  export function resolveViewStyles(theme, breakpoint, props) {
@@ -1 +1 @@
1
- {"version":3,"file":"resolveViewStyles.js","sourceRoot":"","sources":["../../src/utils/resolveViewStyles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ViewStyle } from 'react-native';\n\nimport { resolveResponsive } from '../core/responsive/resolve';\nimport type { Breakpoint } from '../core/responsive/types';\nimport { resolveToken } from '../theme/resolveToken';\nimport type { SurfaceTheme } from '../theme/types';\nimport type { ColorValue, ViewStyleProps } from '../types/layout';\nimport { resolveSpacing } from './resolveSpacing';\n\n/*** Resolves responsive Surface View style props into one React Native view style. */\nexport function resolveViewStyles(\n theme: SurfaceTheme,\n breakpoint: Breakpoint,\n props: ViewStyleProps,\n): ViewStyle {\n return {\n elevation: 0,\n ...resolveSpacingStyles(theme, breakpoint, props),\n ...resolveVisualStyles(theme, breakpoint, props),\n ...resolveDimensionStyles(theme, breakpoint, props),\n ...resolveLayoutStyles(breakpoint, props),\n };\n}\n\n/*** Resolves padding, margin, and gap styles from responsive spacing props. */\nfunction resolveSpacingStyles(\n theme: SurfaceTheme,\n breakpoint: Breakpoint,\n props: ViewStyleProps,\n): ViewStyle {\n return {\n padding: resolveSpacing(theme, resolveResponsive(props.p, breakpoint)),\n paddingHorizontal: resolveSpacing(theme, resolveResponsive(props.px, breakpoint)),\n paddingVertical: resolveSpacing(theme, resolveResponsive(props.py, breakpoint)),\n paddingTop: resolveSpacing(theme, resolveResponsive(props.pt, breakpoint)),\n paddingBottom: resolveSpacing(theme, resolveResponsive(props.pb, breakpoint)),\n paddingLeft: resolveSpacing(theme, resolveResponsive(props.pl, breakpoint)),\n paddingRight: resolveSpacing(theme, resolveResponsive(props.pr, breakpoint)),\n margin: resolveSpacing(theme, resolveResponsive(props.m, breakpoint)),\n marginHorizontal: resolveSpacing(theme, resolveResponsive(props.mx, breakpoint)),\n marginVertical: resolveSpacing(theme, resolveResponsive(props.my, breakpoint)),\n marginTop: resolveSpacing(theme, resolveResponsive(props.mt, breakpoint)),\n marginBottom: resolveSpacing(theme, resolveResponsive(props.mb, breakpoint)),\n marginLeft: resolveSpacing(theme, resolveResponsive(props.ml, breakpoint)),\n marginRight: resolveSpacing(theme, resolveResponsive(props.mr, breakpoint)),\n gap: resolveSpacing(theme, resolveResponsive(props.gap, breakpoint)),\n rowGap: resolveSpacing(theme, resolveResponsive(props.rowGap, breakpoint)),\n columnGap: resolveSpacing(theme, resolveResponsive(props.columnGap, breakpoint)),\n };\n}\n\n/*** Resolves background, radius, and border styles. */\nfunction resolveVisualStyles(\n theme: SurfaceTheme,\n breakpoint: Breakpoint,\n props: ViewStyleProps,\n): ViewStyle {\n return {\n backgroundColor: resolveColor(theme, resolveResponsive(props.bg, breakpoint)),\n borderRadius: resolveRadius(theme, resolveResponsive(props.radius, breakpoint)),\n borderWidth: resolveResponsive(props.borderWidth, breakpoint),\n borderColor: resolveColor(theme, resolveResponsive(props.borderColor, breakpoint)),\n };\n}\n\n/*** Resolves responsive dimension props through spacing tokens. */\nfunction resolveDimensionStyles(\n theme: SurfaceTheme,\n breakpoint: Breakpoint,\n props: ViewStyleProps,\n): ViewStyle {\n return {\n width: resolveDimension(\n theme,\n resolveResponsive(props.width, breakpoint),\n ) as ViewStyle['width'],\n height: resolveDimension(\n theme,\n resolveResponsive(props.height, breakpoint),\n ) as ViewStyle['height'],\n minWidth: resolveDimension(\n theme,\n resolveResponsive(props.minWidth, breakpoint),\n ) as ViewStyle['minWidth'],\n maxWidth: resolveDimension(\n theme,\n resolveResponsive(props.maxWidth, breakpoint),\n ) as ViewStyle['maxWidth'],\n minHeight: resolveDimension(\n theme,\n resolveResponsive(props.minHeight, breakpoint),\n ) as ViewStyle['minHeight'],\n maxHeight: resolveDimension(\n theme,\n resolveResponsive(props.maxHeight, breakpoint),\n ) as ViewStyle['maxHeight'],\n };\n}\n\n/*** Resolves responsive flex, positioning, and visibility styles. */\nfunction resolveLayoutStyles(breakpoint: Breakpoint, props: ViewStyleProps): ViewStyle {\n return {\n flex: resolveResponsive(props.flex, breakpoint),\n flexGrow: resolveResponsive(props.flexGrow, breakpoint),\n flexShrink: resolveResponsive(props.flexShrink, breakpoint),\n flexBasis: resolveResponsive(props.flexBasis, breakpoint) as ViewStyle['flexBasis'],\n flexDirection: resolveResponsive(props.direction, breakpoint),\n alignItems: resolveResponsive(props.align, breakpoint),\n justifyContent: resolveResponsive(props.justify, breakpoint),\n flexWrap: resolveResponsive(props.wrap, breakpoint),\n alignSelf: resolveResponsive(props.alignSelf, breakpoint),\n position: resolveResponsive(props.position, breakpoint),\n top: resolveResponsive(props.top, breakpoint),\n bottom: resolveResponsive(props.bottom, breakpoint),\n left: resolveResponsive(props.left, breakpoint),\n right: resolveResponsive(props.right, breakpoint),\n overflow: resolveResponsive(props.overflow, breakpoint),\n zIndex: resolveResponsive(props.zIndex, breakpoint),\n opacity: resolveResponsive(props.opacity, breakpoint),\n };\n}\n\n/*** Resolves a Surface radius token or raw number. */\nfunction resolveRadius(\n theme: SurfaceTheme,\n value: number | keyof SurfaceTheme['radii'] | undefined,\n): number | undefined {\n return resolveToken(theme.radii, value);\n}\n\n/*** Resolves a Surface color token while preserving arbitrary color strings. */\nfunction resolveColor(theme: SurfaceTheme, value: ColorValue | undefined): string | undefined {\n return resolveToken(theme.colors, value);\n}\n\n/*** Resolves spacing-token dimensions while preserving raw dimension strings. */\nfunction resolveDimension(\n theme: SurfaceTheme,\n value: number | string | undefined,\n): number | string | undefined {\n return resolveToken(theme.spacing, value);\n}\n"]}
1
+ {"version":3,"file":"resolveViewStyles.js","sourceRoot":"","sources":["../../src/utils/resolveViewStyles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ViewStyle } from 'react-native';\n\nimport { resolveResponsive } from '../core/responsive/resolve';\nimport type { Breakpoint } from '../core/responsive/types';\nimport { resolveToken } from '../features/theme/utils/resolveToken';\nimport type { ColorValue, ViewStyleProps } from '../types/layout';\nimport type { SurfaceTheme } from '../types/theme';\nimport { resolveSpacing } from './resolveSpacing';\n\n/*** Resolves responsive Surface View style props into one React Native view style. */\nexport function resolveViewStyles(\n theme: SurfaceTheme,\n breakpoint: Breakpoint,\n props: ViewStyleProps,\n): ViewStyle {\n return {\n elevation: 0,\n ...resolveSpacingStyles(theme, breakpoint, props),\n ...resolveVisualStyles(theme, breakpoint, props),\n ...resolveDimensionStyles(theme, breakpoint, props),\n ...resolveLayoutStyles(breakpoint, props),\n };\n}\n\n/*** Resolves padding, margin, and gap styles from responsive spacing props. */\nfunction resolveSpacingStyles(\n theme: SurfaceTheme,\n breakpoint: Breakpoint,\n props: ViewStyleProps,\n): ViewStyle {\n return {\n padding: resolveSpacing(theme, resolveResponsive(props.p, breakpoint)),\n paddingHorizontal: resolveSpacing(theme, resolveResponsive(props.px, breakpoint)),\n paddingVertical: resolveSpacing(theme, resolveResponsive(props.py, breakpoint)),\n paddingTop: resolveSpacing(theme, resolveResponsive(props.pt, breakpoint)),\n paddingBottom: resolveSpacing(theme, resolveResponsive(props.pb, breakpoint)),\n paddingLeft: resolveSpacing(theme, resolveResponsive(props.pl, breakpoint)),\n paddingRight: resolveSpacing(theme, resolveResponsive(props.pr, breakpoint)),\n margin: resolveSpacing(theme, resolveResponsive(props.m, breakpoint)),\n marginHorizontal: resolveSpacing(theme, resolveResponsive(props.mx, breakpoint)),\n marginVertical: resolveSpacing(theme, resolveResponsive(props.my, breakpoint)),\n marginTop: resolveSpacing(theme, resolveResponsive(props.mt, breakpoint)),\n marginBottom: resolveSpacing(theme, resolveResponsive(props.mb, breakpoint)),\n marginLeft: resolveSpacing(theme, resolveResponsive(props.ml, breakpoint)),\n marginRight: resolveSpacing(theme, resolveResponsive(props.mr, breakpoint)),\n gap: resolveSpacing(theme, resolveResponsive(props.gap, breakpoint)),\n rowGap: resolveSpacing(theme, resolveResponsive(props.rowGap, breakpoint)),\n columnGap: resolveSpacing(theme, resolveResponsive(props.columnGap, breakpoint)),\n };\n}\n\n/*** Resolves background, radius, and border styles. */\nfunction resolveVisualStyles(\n theme: SurfaceTheme,\n breakpoint: Breakpoint,\n props: ViewStyleProps,\n): ViewStyle {\n return {\n backgroundColor: resolveColor(theme, resolveResponsive(props.bg, breakpoint)),\n borderRadius: resolveRadius(theme, resolveResponsive(props.radius, breakpoint)),\n borderWidth: resolveResponsive(props.borderWidth, breakpoint),\n borderColor: resolveColor(theme, resolveResponsive(props.borderColor, breakpoint)),\n };\n}\n\n/*** Resolves responsive dimension props through spacing tokens. */\nfunction resolveDimensionStyles(\n theme: SurfaceTheme,\n breakpoint: Breakpoint,\n props: ViewStyleProps,\n): ViewStyle {\n return {\n width: resolveDimension(\n theme,\n resolveResponsive(props.width, breakpoint),\n ) as ViewStyle['width'],\n height: resolveDimension(\n theme,\n resolveResponsive(props.height, breakpoint),\n ) as ViewStyle['height'],\n minWidth: resolveDimension(\n theme,\n resolveResponsive(props.minWidth, breakpoint),\n ) as ViewStyle['minWidth'],\n maxWidth: resolveDimension(\n theme,\n resolveResponsive(props.maxWidth, breakpoint),\n ) as ViewStyle['maxWidth'],\n minHeight: resolveDimension(\n theme,\n resolveResponsive(props.minHeight, breakpoint),\n ) as ViewStyle['minHeight'],\n maxHeight: resolveDimension(\n theme,\n resolveResponsive(props.maxHeight, breakpoint),\n ) as ViewStyle['maxHeight'],\n };\n}\n\n/*** Resolves responsive flex, positioning, and visibility styles. */\nfunction resolveLayoutStyles(breakpoint: Breakpoint, props: ViewStyleProps): ViewStyle {\n return {\n flex: resolveResponsive(props.flex, breakpoint),\n flexGrow: resolveResponsive(props.flexGrow, breakpoint),\n flexShrink: resolveResponsive(props.flexShrink, breakpoint),\n flexBasis: resolveResponsive(props.flexBasis, breakpoint) as ViewStyle['flexBasis'],\n flexDirection: resolveResponsive(props.direction, breakpoint),\n alignItems: resolveResponsive(props.align, breakpoint),\n justifyContent: resolveResponsive(props.justify, breakpoint),\n flexWrap: resolveResponsive(props.wrap, breakpoint),\n alignSelf: resolveResponsive(props.alignSelf, breakpoint),\n position: resolveResponsive(props.position, breakpoint),\n top: resolveResponsive(props.top, breakpoint),\n bottom: resolveResponsive(props.bottom, breakpoint),\n left: resolveResponsive(props.left, breakpoint),\n right: resolveResponsive(props.right, breakpoint),\n overflow: resolveResponsive(props.overflow, breakpoint),\n zIndex: resolveResponsive(props.zIndex, breakpoint),\n opacity: resolveResponsive(props.opacity, breakpoint),\n };\n}\n\n/*** Resolves a Surface radius token or raw number. */\nfunction resolveRadius(\n theme: SurfaceTheme,\n value: number | keyof SurfaceTheme['radii'] | undefined,\n): number | undefined {\n return resolveToken(theme.radii, value);\n}\n\n/*** Resolves a Surface color token while preserving arbitrary color strings. */\nfunction resolveColor(theme: SurfaceTheme, value: ColorValue | undefined): string | undefined {\n return resolveToken(theme.colors, value);\n}\n\n/*** Resolves spacing-token dimensions while preserving raw dimension strings. */\nfunction resolveDimension(\n theme: SurfaceTheme,\n value: number | string | undefined,\n): number | string | undefined {\n return resolveToken(theme.spacing, value);\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ankhorage/surface",
3
3
  "type": "module",
4
- "version": "7.0.0",
4
+ "version": "9.0.0",
5
5
  "description": "Stable UI foundation for React Native and React Native Web.",
6
6
  "homepage": "https://github.com/ankhorage/surface#readme",
7
7
  "bugs": {
@@ -44,6 +44,7 @@
44
44
  "dependencies": {
45
45
  "@ankhorage/color-theory": "^0.3.0",
46
46
  "@ankhorage/contracts": "^12.0.1",
47
+ "@ankhorage/utility": "^1.2.0",
47
48
  "@gorhom/bottom-sheet": "^5.2.13"
48
49
  },
49
50
  "files": [
@@ -69,12 +70,12 @@
69
70
  "default": "./dist/features/bottom-sheet/public.js"
70
71
  },
71
72
  "./theme": {
72
- "bun": "./src/theme/public.ts",
73
- "react-native": "./src/theme/public.ts",
74
- "browser": "./src/theme/public.ts",
75
- "types": "./dist/theme/public.d.ts",
76
- "import": "./dist/theme/public.js",
77
- "default": "./dist/theme/public.js"
73
+ "bun": "./src/features/theme/public.ts",
74
+ "react-native": "./src/features/theme/public.ts",
75
+ "browser": "./src/features/theme/public.ts",
76
+ "types": "./dist/features/theme/public.d.ts",
77
+ "import": "./dist/features/theme/public.js",
78
+ "default": "./dist/features/theme/public.js"
78
79
  },
79
80
  "./package.json": "./package.json"
80
81
  },
@@ -0,0 +1,18 @@
1
+ import { describe, expect, it } from 'bun:test';
2
+
3
+ import {
4
+ SURFACE_COLORS,
5
+ SURFACE_EMPHASES,
6
+ SURFACE_PALETTE_COLORS,
7
+ SURFACE_STATUS_COLORS,
8
+ } from './surfaceColor';
9
+
10
+ describe('surface color constants', () => {
11
+ it('keeps canonical color and emphasis catalogs unique and aligned', () => {
12
+ expect(new Set(SURFACE_COLORS).size).toBe(SURFACE_COLORS.length);
13
+ expect(new Set(SURFACE_EMPHASES).size).toBe(SURFACE_EMPHASES.length);
14
+ for (const color of [...SURFACE_PALETTE_COLORS, ...SURFACE_STATUS_COLORS]) {
15
+ expect(SURFACE_COLORS).toContain(color);
16
+ }
17
+ });
18
+ });
@@ -15,8 +15,3 @@ export const SURFACE_COLORS = [
15
15
  ] as const;
16
16
 
17
17
  export const SURFACE_EMPHASES = ['default', 'muted', 'subtle', 'inverse'] as const;
18
-
19
- export type SurfacePaletteColor = (typeof SURFACE_PALETTE_COLORS)[number];
20
- export type SurfaceStatusColor = (typeof SURFACE_STATUS_COLORS)[number];
21
- export type SurfaceColor = (typeof SURFACE_COLORS)[number];
22
- export type SurfaceEmphasis = (typeof SURFACE_EMPHASES)[number];
@@ -2,9 +2,9 @@ import React from 'react';
2
2
  import { StyleSheet, View as ReactNativeView, type ViewStyle } from 'react-native';
3
3
  import { SafeAreaInsetsContext } from 'react-native-safe-area-context';
4
4
 
5
- import { useTheme } from '../../../../theme/ThemeContext';
6
5
  import type { AppBarProps } from '../../../../types/app-bar';
7
6
  import { Divider, View } from '../../../layout/public';
7
+ import { useTheme } from '../../../theme/runtime';
8
8
 
9
9
  /*** Renders application chrome with optional safe-area padding and leading/trailing slots. */
10
10
  export function AppBar({
@@ -2,9 +2,9 @@ import React from 'react';
2
2
  import type { ViewStyle } from 'react-native';
3
3
 
4
4
  import { resolveButtonColors, resolveControlSize } from '../../../../internal/resolvers';
5
- import { useTheme } from '../../../../theme/ThemeContext';
6
5
  import type { BadgeProps } from '../../../../types/badge';
7
6
  import { View } from '../../../layout/public';
7
+ import { useTheme } from '../../../theme/runtime';
8
8
  import { Text } from '../../../typography/public';
9
9
 
10
10
  /*** Renders compact semantic status or metadata content. */
@@ -7,12 +7,12 @@ import {
7
7
  resolveControlSize,
8
8
  resolveIconSize,
9
9
  } from '../../../../internal/resolvers';
10
- import { ButtonBase } from '../../../../primitives/button-base';
11
- import { useTheme } from '../../../../theme/ThemeContext';
12
- import type { SurfaceTheme } from '../../../../theme/types';
13
10
  import type { ButtonProps } from '../../../../types/button';
11
+ import type { SurfaceTheme } from '../../../../types/theme';
14
12
  import { Icon } from '../../../icon/public';
15
13
  import { View } from '../../../layout/public';
14
+ import { Pressable } from '../../../pressable/public';
15
+ import { useTheme } from '../../../theme/runtime';
16
16
  import { Text } from '../../../typography/public';
17
17
 
18
18
  /*** Renders the primary Surface action control with semantic visual states. */
@@ -34,11 +34,11 @@ export function Button({
34
34
  const controlSize = resolveControlSize(theme, size);
35
35
 
36
36
  return (
37
- <ButtonBase
37
+ <Pressable
38
38
  {...props}
39
39
  disabled={disabled || loading}
40
40
  onPress={onPress}
41
- style={resolveButtonBaseStyle(fullWidth)}
41
+ style={resolvePressableStyle(fullWidth)}
42
42
  testID={testID}
43
43
  >
44
44
  {(state) => (
@@ -57,7 +57,7 @@ export function Button({
57
57
  {children}
58
58
  </ButtonContent>
59
59
  )}
60
- </ButtonBase>
60
+ </Pressable>
61
61
  );
62
62
  }
63
63
 
@@ -114,8 +114,8 @@ function ButtonContent({
114
114
  );
115
115
  }
116
116
 
117
- /*** Resolves the outer ButtonBase layout style. */
118
- function resolveButtonBaseStyle(fullWidth: boolean): ViewStyle {
117
+ /*** Resolves the outer Pressable layout style. */
118
+ function resolvePressableStyle(fullWidth: boolean): ViewStyle {
119
119
  return { alignSelf: fullWidth ? 'stretch' : 'flex-start' };
120
120
  }
121
121
 
@@ -6,11 +6,11 @@ import {
6
6
  resolveControlSize,
7
7
  resolveIconSize,
8
8
  } from '../../../../internal/resolvers';
9
- import { ButtonBase } from '../../../../primitives/button-base';
10
- import { useTheme } from '../../../../theme/ThemeContext';
11
9
  import type { IconButtonProps } from '../../../../types/button';
12
10
  import { Icon } from '../../../icon/public';
13
11
  import { View } from '../../../layout/public';
12
+ import { Pressable } from '../../../pressable/public';
13
+ import { useTheme } from '../../../theme/runtime';
14
14
 
15
15
  /*** Renders a compact accessible icon-only action control. */
16
16
  export function IconButton({
@@ -28,7 +28,7 @@ export function IconButton({
28
28
  const controlSize = resolveControlSize(theme, size);
29
29
 
30
30
  return (
31
- <ButtonBase
31
+ <Pressable
32
32
  {...props}
33
33
  accessibilityLabel={accessibilityLabel}
34
34
  disabled={disabled}
@@ -46,7 +46,7 @@ export function IconButton({
46
46
  </View>
47
47
  );
48
48
  }}
49
- </ButtonBase>
49
+ </Pressable>
50
50
  );
51
51
  }
52
52
 
@@ -1,11 +1,11 @@
1
1
  import React from 'react';
2
2
  import type { ViewStyle } from 'react-native';
3
3
 
4
- import { ButtonBase } from '../../../../primitives/button-base';
5
- import { useTheme } from '../../../../theme/ThemeContext';
6
4
  import type { CardProps } from '../../../../types/card';
7
5
  import type { SurfaceVariant } from '../../../../types/surface';
6
+ import { Pressable } from '../../../pressable/public';
8
7
  import { Surface } from '../../../surface/public';
8
+ import { useTheme } from '../../../theme/runtime';
9
9
 
10
10
  /*** Renders a themed content card with optional interactive press states. */
11
11
  export function Card({
@@ -28,7 +28,7 @@ export function Card({
28
28
  }
29
29
 
30
30
  return (
31
- <ButtonBase accessibilityRole="button" disabled={disabled} onPress={onPress} testID={testID}>
31
+ <Pressable accessibilityRole="button" disabled={disabled} onPress={onPress} testID={testID}>
32
32
  {(state) => (
33
33
  <Surface
34
34
  {...props}
@@ -46,7 +46,7 @@ export function Card({
46
46
  {children}
47
47
  </Surface>
48
48
  )}
49
- </ButtonBase>
49
+ </Pressable>
50
50
  );
51
51
  }
52
52
 
@@ -0,0 +1,27 @@
1
+ import { useMemo, useState } from 'react';
2
+
3
+ import type { FontProviderProps, FontRuntime } from '../../../../types/font';
4
+ import { FontRuntimeContext } from './FontRuntimeContext';
5
+
6
+ /*** Provide loaded-font state and the active font id to Surface theme composition. */
7
+ export function FontProvider({
8
+ fontsLoaded,
9
+ activeFontId: initialActiveFontId = null,
10
+ children,
11
+ onActiveFontChange,
12
+ }: FontProviderProps) {
13
+ const [activeFontId, setActiveFontIdState] = useState(initialActiveFontId);
14
+ const value = useMemo<FontRuntime>(
15
+ () => ({
16
+ fontsLoaded,
17
+ activeFontId,
18
+ setActiveFontId: (id: string) => {
19
+ setActiveFontIdState(id);
20
+ onActiveFontChange?.(id);
21
+ },
22
+ }),
23
+ [activeFontId, fontsLoaded, onActiveFontChange],
24
+ );
25
+
26
+ return <FontRuntimeContext value={value}>{children}</FontRuntimeContext>;
27
+ }
@@ -0,0 +1,12 @@
1
+ import { createContext } from 'react';
2
+
3
+ import type { FontRuntime } from '../../../../types/font';
4
+
5
+ const fallbackRuntime: FontRuntime = {
6
+ fontsLoaded: true,
7
+ activeFontId: null,
8
+ setActiveFontId: () => undefined,
9
+ };
10
+
11
+ /*** Holds Surface font runtime state for theme resolution. */
12
+ export const FontRuntimeContext = createContext<FontRuntime>(fallbackRuntime);
@@ -0,0 +1,9 @@
1
+ import { use } from 'react';
2
+
3
+ import type { FontRuntime } from '../../../../types/font';
4
+ import { FontRuntimeContext } from './FontRuntimeContext';
5
+
6
+ /*** Read the internal font runtime used by Surface theme composition. */
7
+ export function useFontRuntime(): FontRuntime {
8
+ return use(FontRuntimeContext);
9
+ }
@@ -0,0 +1,2 @@
1
+ export type { FontProviderProps, FontRuntime } from '../../types/font';
2
+ export { FontProvider } from './adapters/inbound/FontProvider';
@@ -9,12 +9,12 @@ import {
9
9
  resolveSelectionControlNextChecked,
10
10
  } from '../../../../../internal/resolvers';
11
11
  import { useControllableState } from '../../../../../internal/useControllableState';
12
- import { ButtonBase } from '../../../../../primitives/button-base';
13
- import type { ButtonBaseProps } from '../../../../../primitives/button-base/types';
14
- import { useTheme } from '../../../../../theme/ThemeContext';
15
- import type { SurfaceTheme } from '../../../../../theme/types';
16
12
  import type { CheckboxProps } from '../../../../../types/checkbox';
13
+ import type { SurfaceTheme } from '../../../../../types/theme';
17
14
  import { View } from '../../../../layout/public';
15
+ import type { PressableProps } from '../../../../pressable/public';
16
+ import { Pressable } from '../../../../pressable/public';
17
+ import { useTheme } from '../../../../theme/runtime';
18
18
  import { Text } from '../../../../typography/public';
19
19
 
20
20
  /*** Renders a controlled or uncontrolled accessible checkbox. */
@@ -81,7 +81,7 @@ function CheckboxControl({
81
81
  });
82
82
 
83
83
  return (
84
- <ButtonBase
84
+ <Pressable
85
85
  {...buttonProps}
86
86
  accessibilityLabel={accessibilityLabel}
87
87
  accessibilityRole="checkbox"
@@ -103,7 +103,7 @@ function CheckboxControl({
103
103
  theme,
104
104
  })
105
105
  }
106
- </ButtonBase>
106
+ </Pressable>
107
107
  );
108
108
  }
109
109
 
@@ -181,7 +181,7 @@ function resolveCheckboxIndicatorStyle(
181
181
 
182
182
  interface CheckboxControlProps {
183
183
  accessibilityLabel: CheckboxProps['accessibilityLabel'];
184
- buttonProps: ButtonBaseProps;
184
+ buttonProps: PressableProps;
185
185
  children: CheckboxProps['children'];
186
186
  color: NonNullable<CheckboxProps['color']>;
187
187
  disabled: boolean;
@@ -9,12 +9,12 @@ import {
9
9
  resolveSelectionControlNextChecked,
10
10
  } from '../../../../../internal/resolvers';
11
11
  import { useControllableState } from '../../../../../internal/useControllableState';
12
- import { ButtonBase } from '../../../../../primitives/button-base';
13
- import type { ButtonBaseProps } from '../../../../../primitives/button-base/types';
14
- import { useTheme } from '../../../../../theme/ThemeContext';
15
- import type { SurfaceTheme } from '../../../../../theme/types';
16
12
  import type { RadioProps } from '../../../../../types/radio';
13
+ import type { SurfaceTheme } from '../../../../../types/theme';
17
14
  import { View } from '../../../../layout/public';
15
+ import type { PressableProps } from '../../../../pressable/public';
16
+ import { Pressable } from '../../../../pressable/public';
17
+ import { useTheme } from '../../../../theme/runtime';
18
18
  import { Text } from '../../../../typography/public';
19
19
  import { isRadioTextContent } from '../../utils/isRadioTextContent';
20
20
 
@@ -82,7 +82,7 @@ function RadioControl({
82
82
  });
83
83
 
84
84
  return (
85
- <ButtonBase
85
+ <Pressable
86
86
  {...buttonProps}
87
87
  accessibilityLabel={accessibilityLabel}
88
88
  accessibilityRole="radio"
@@ -104,7 +104,7 @@ function RadioControl({
104
104
  theme,
105
105
  })
106
106
  }
107
- </ButtonBase>
107
+ </Pressable>
108
108
  );
109
109
  }
110
110
 
@@ -188,7 +188,7 @@ function resolveRadioDotStyle(backgroundColor: string, size: number): ViewStyle
188
188
 
189
189
  interface RadioControlProps {
190
190
  accessibilityLabel: RadioProps['accessibilityLabel'];
191
- buttonProps: ButtonBaseProps;
191
+ buttonProps: PressableProps;
192
192
  children: RadioProps['children'];
193
193
  color: NonNullable<RadioProps['color']>;
194
194
  disabled: boolean;
@@ -8,10 +8,10 @@ import {
8
8
  resolveSelectionControlNextChecked,
9
9
  } from '../../../../../internal/resolvers';
10
10
  import { useControllableState } from '../../../../../internal/useControllableState';
11
- import { ButtonBase } from '../../../../../primitives/button-base';
12
- import { useTheme } from '../../../../../theme/ThemeContext';
13
11
  import type { SwitchProps } from '../../../../../types/switch';
14
12
  import { View } from '../../../../layout/public';
13
+ import { Pressable } from '../../../../pressable/public';
14
+ import { useTheme } from '../../../../theme/runtime';
15
15
  import { Text } from '../../../../typography/public';
16
16
 
17
17
  /*** Renders a controlled or uncontrolled accessible switch. */
@@ -43,7 +43,7 @@ export function Switch({
43
43
  });
44
44
 
45
45
  return (
46
- <ButtonBase
46
+ <Pressable
47
47
  {...props}
48
48
  accessibilityLabel={accessibilityLabel}
49
49
  accessibilityRole="switch"
@@ -58,7 +58,7 @@ export function Switch({
58
58
  interactionState,
59
59
  )
60
60
  }
61
- </ButtonBase>
61
+ </Pressable>
62
62
  );
63
63
  }
64
64
 
@@ -9,8 +9,8 @@ import {
9
9
  } from 'react-native';
10
10
 
11
11
  import { resolveFocusRingStyles } from '../../../../../internal/resolvers';
12
- import { useTheme } from '../../../../../theme/ThemeContext';
13
12
  import type { TextInputProps } from '../../../../../types/text-input';
13
+ import { useTheme } from '../../../../theme/runtime';
14
14
  import { resolveTextInputPresentation } from '../../utils/resolveTextInputPresentation';
15
15
 
16
16
  /*** Renders a token-aware text input with controlled interaction policy. */
@@ -6,8 +6,8 @@ import {
6
6
  resolveInputColors,
7
7
  resolveTextStyles,
8
8
  } from '../../../../internal/resolvers';
9
- import type { SurfaceTheme } from '../../../../theme/types';
10
9
  import type { TextInputProps } from '../../../../types/text-input';
10
+ import type { SurfaceTheme } from '../../../../types/theme';
11
11
 
12
12
  /*** Resolves layout, colors, and editability for one TextInput state. */
13
13
  export function resolveTextInputPresentation(
@@ -1,6 +1,6 @@
1
- import { resolveToken } from '../../../../theme/resolveToken';
2
- import { useTheme } from '../../../../theme/ThemeContext';
3
1
  import type { IconProps } from '../../../../types/icon';
2
+ import { useTheme } from '../../../theme/runtime';
3
+ import { resolveToken } from '../../../theme/utils/resolveToken';
4
4
  import { PortableIcon } from './PortableIcon';
5
5
 
6
6
  /*** Renders a theme-aware font or SVG icon through the portable icon adapter. */
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { Image as ReactNativeImage } from 'react-native';
3
3
 
4
- import { useTheme } from '../../../../theme/ThemeContext';
5
4
  import type { ImageProps } from '../../../../types/image';
5
+ import { useTheme } from '../../../theme/runtime';
6
6
  import { getSourceKey } from '../../utils/getSourceKey';
7
7
  import { normalizeSource } from '../../utils/normalizeSource';
8
8
  import { resolveAccessibilityLabel } from '../../utils/resolveAccessibilityLabel';
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it } from 'bun:test';
2
2
 
3
- import { createTheme } from '../../../theme/createTheme';
3
+ import { createTheme } from '../../theme/application/use-cases/createTheme';
4
4
  import { getSourceKey } from './getSourceKey';
5
5
  import { normalizeSource } from './normalizeSource';
6
6
  import { resolveImageStyle } from './resolveImageStyle';
@@ -1,8 +1,8 @@
1
1
  import type { ImageStyle } from 'react-native';
2
2
 
3
- import { resolveToken } from '../../../theme/resolveToken';
4
- import type { SurfaceTheme } from '../../../theme/types';
5
3
  import type { ImageProps } from '../../../types/image';
4
+ import type { SurfaceTheme } from '../../../types/theme';
5
+ import { resolveToken } from '../../theme/utils/resolveToken';
6
6
 
7
7
  /*** Resolves token-aware dimensions and radius for a Surface image. */
8
8
  export function resolveImageStyle(
@@ -2,9 +2,9 @@ import React from 'react';
2
2
  import { View as ReactNativeView, type ViewStyle } from 'react-native';
3
3
 
4
4
  import { resolveResponsive, useResponsiveRuntime } from '../../../../core/responsive';
5
- import { useTheme } from '../../../../theme/ThemeContext';
6
5
  import type { GridProps } from '../../../../types/layout';
7
6
  import { resolveSpacing } from '../../../../utils/resolveSpacing';
7
+ import { useTheme } from '../../../theme/runtime';
8
8
  import { View } from './View';
9
9
 
10
10
  /*** Lays out children in a responsive wrapping grid. */
@@ -2,9 +2,9 @@ import React from 'react';
2
2
  import { ScrollView as ReactNativeScrollView } from 'react-native';
3
3
 
4
4
  import { useResponsiveRuntime } from '../../../../core/responsive';
5
- import { useTheme } from '../../../../theme/ThemeContext';
6
5
  import type { ScrollViewProps } from '../../../../types/layout';
7
6
  import { resolveViewStyles } from '../../../../utils/resolveViewStyles';
7
+ import { useTheme } from '../../../theme/runtime';
8
8
 
9
9
  /*** Renders the token-aware responsive Surface adapter for React Native ScrollView. */
10
10
  export function ScrollView(props: ScrollViewProps) {