@ankhorage/surface 8.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 (478) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{surfaceColor.d.ts → constants/surfaceColor.d.ts} +0 -4
  3. package/dist/constants/surfaceColor.d.ts.map +1 -0
  4. package/dist/constants/surfaceColor.js.map +1 -0
  5. package/dist/features/app-bar/adapters/inbound/AppBar.d.ts.map +1 -1
  6. package/dist/features/app-bar/adapters/inbound/AppBar.js +1 -1
  7. package/dist/features/app-bar/adapters/inbound/AppBar.js.map +1 -1
  8. package/dist/features/badge/adapters/inbound/Badge.d.ts.map +1 -1
  9. package/dist/features/badge/adapters/inbound/Badge.js +1 -1
  10. package/dist/features/badge/adapters/inbound/Badge.js.map +1 -1
  11. package/dist/features/button/adapters/inbound/Button.d.ts.map +1 -1
  12. package/dist/features/button/adapters/inbound/Button.js +1 -1
  13. package/dist/features/button/adapters/inbound/Button.js.map +1 -1
  14. package/dist/features/button/adapters/inbound/IconButton.d.ts.map +1 -1
  15. package/dist/features/button/adapters/inbound/IconButton.js +1 -1
  16. package/dist/features/button/adapters/inbound/IconButton.js.map +1 -1
  17. package/dist/features/card/adapters/inbound/Card.d.ts.map +1 -1
  18. package/dist/features/card/adapters/inbound/Card.js +1 -1
  19. package/dist/features/card/adapters/inbound/Card.js.map +1 -1
  20. package/dist/features/font/adapters/inbound/FontProvider.d.ts +4 -0
  21. package/dist/features/font/adapters/inbound/FontProvider.d.ts.map +1 -0
  22. package/dist/features/font/adapters/inbound/FontProvider.js +16 -0
  23. package/dist/features/font/adapters/inbound/FontProvider.js.map +1 -0
  24. package/dist/features/font/adapters/inbound/FontRuntimeContext.d.ts +4 -0
  25. package/dist/features/font/adapters/inbound/FontRuntimeContext.d.ts.map +1 -0
  26. package/dist/features/font/adapters/inbound/FontRuntimeContext.js +9 -0
  27. package/dist/features/font/adapters/inbound/FontRuntimeContext.js.map +1 -0
  28. package/dist/features/font/adapters/inbound/useFontRuntime.d.ts +4 -0
  29. package/dist/features/font/adapters/inbound/useFontRuntime.d.ts.map +1 -0
  30. package/dist/features/font/adapters/inbound/useFontRuntime.js +7 -0
  31. package/dist/features/font/adapters/inbound/useFontRuntime.js.map +1 -0
  32. package/dist/features/font/public.d.ts +3 -0
  33. package/dist/features/font/public.d.ts.map +1 -0
  34. package/dist/features/font/public.js +2 -0
  35. package/dist/features/font/public.js.map +1 -0
  36. package/dist/features/form/checkbox/adapters/inbound/Checkbox.d.ts.map +1 -1
  37. package/dist/features/form/checkbox/adapters/inbound/Checkbox.js +1 -1
  38. package/dist/features/form/checkbox/adapters/inbound/Checkbox.js.map +1 -1
  39. package/dist/features/form/radio/adapters/inbound/Radio.d.ts.map +1 -1
  40. package/dist/features/form/radio/adapters/inbound/Radio.js +1 -1
  41. package/dist/features/form/radio/adapters/inbound/Radio.js.map +1 -1
  42. package/dist/features/form/switch/adapters/inbound/Switch.d.ts.map +1 -1
  43. package/dist/features/form/switch/adapters/inbound/Switch.js +1 -1
  44. package/dist/features/form/switch/adapters/inbound/Switch.js.map +1 -1
  45. package/dist/features/form/text-input/adapters/inbound/TextInput.d.ts.map +1 -1
  46. package/dist/features/form/text-input/adapters/inbound/TextInput.js +1 -1
  47. package/dist/features/form/text-input/adapters/inbound/TextInput.js.map +1 -1
  48. package/dist/features/form/text-input/utils/resolveTextInputPresentation.d.ts +1 -1
  49. package/dist/features/form/text-input/utils/resolveTextInputPresentation.d.ts.map +1 -1
  50. package/dist/features/form/text-input/utils/resolveTextInputPresentation.js.map +1 -1
  51. package/dist/features/icon/adapters/inbound/Icon.d.ts.map +1 -1
  52. package/dist/features/icon/adapters/inbound/Icon.js +2 -2
  53. package/dist/features/icon/adapters/inbound/Icon.js.map +1 -1
  54. package/dist/features/image/adapters/inbound/Image.d.ts.map +1 -1
  55. package/dist/features/image/adapters/inbound/Image.js +1 -1
  56. package/dist/features/image/adapters/inbound/Image.js.map +1 -1
  57. package/dist/features/image/utils/resolveImageStyle.d.ts +1 -1
  58. package/dist/features/image/utils/resolveImageStyle.d.ts.map +1 -1
  59. package/dist/features/image/utils/resolveImageStyle.js +1 -1
  60. package/dist/features/image/utils/resolveImageStyle.js.map +1 -1
  61. package/dist/features/layout/adapters/inbound/Grid.d.ts.map +1 -1
  62. package/dist/features/layout/adapters/inbound/Grid.js +1 -1
  63. package/dist/features/layout/adapters/inbound/Grid.js.map +1 -1
  64. package/dist/features/layout/adapters/inbound/ScrollView.d.ts.map +1 -1
  65. package/dist/features/layout/adapters/inbound/ScrollView.js +1 -1
  66. package/dist/features/layout/adapters/inbound/ScrollView.js.map +1 -1
  67. package/dist/features/layout/adapters/inbound/View.d.ts.map +1 -1
  68. package/dist/features/layout/adapters/inbound/View.js +1 -1
  69. package/dist/features/layout/adapters/inbound/View.js.map +1 -1
  70. package/dist/features/list/adapters/inbound/ListItem.d.ts.map +1 -1
  71. package/dist/features/list/adapters/inbound/ListItem.js +1 -1
  72. package/dist/features/list/adapters/inbound/ListItem.js.map +1 -1
  73. package/dist/features/modal/adapters/inbound/Modal.d.ts.map +1 -1
  74. package/dist/features/modal/adapters/inbound/Modal.js +1 -1
  75. package/dist/features/modal/adapters/inbound/Modal.js.map +1 -1
  76. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.d.ts.map +1 -1
  77. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.js +1 -1
  78. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.js.map +1 -1
  79. package/dist/features/pressable/adapters/inbound/Pressable.d.ts.map +1 -1
  80. package/dist/features/pressable/adapters/inbound/Pressable.js +1 -1
  81. package/dist/features/pressable/adapters/inbound/Pressable.js.map +1 -1
  82. package/dist/features/surface/adapters/inbound/Surface.d.ts.map +1 -1
  83. package/dist/features/surface/adapters/inbound/Surface.js +1 -1
  84. package/dist/features/surface/adapters/inbound/Surface.js.map +1 -1
  85. package/dist/features/tabs/adapters/inbound/Tab.d.ts.map +1 -1
  86. package/dist/features/tabs/adapters/inbound/Tab.js +1 -1
  87. package/dist/features/tabs/adapters/inbound/Tab.js.map +1 -1
  88. package/dist/features/theme/adapters/inbound/ThemeProvider.d.ts +4 -0
  89. package/dist/features/theme/adapters/inbound/ThemeProvider.d.ts.map +1 -0
  90. package/dist/features/theme/adapters/inbound/ThemeProvider.js +27 -0
  91. package/dist/features/theme/adapters/inbound/ThemeProvider.js.map +1 -0
  92. package/dist/features/theme/adapters/inbound/ThemeRuntimeContext.d.ts +4 -0
  93. package/dist/features/theme/adapters/inbound/ThemeRuntimeContext.d.ts.map +1 -0
  94. package/dist/features/theme/adapters/inbound/ThemeRuntimeContext.js +11 -0
  95. package/dist/features/theme/adapters/inbound/ThemeRuntimeContext.js.map +1 -0
  96. package/dist/features/theme/adapters/inbound/ThemeScope.d.ts +4 -0
  97. package/dist/features/theme/adapters/inbound/ThemeScope.d.ts.map +1 -0
  98. package/dist/features/theme/adapters/inbound/ThemeScope.js +17 -0
  99. package/dist/features/theme/adapters/inbound/ThemeScope.js.map +1 -0
  100. package/dist/features/theme/adapters/inbound/useTheme.d.ts +4 -0
  101. package/dist/features/theme/adapters/inbound/useTheme.d.ts.map +1 -0
  102. package/dist/features/theme/adapters/inbound/useTheme.js +7 -0
  103. package/dist/features/theme/adapters/inbound/useTheme.js.map +1 -0
  104. package/dist/features/theme/application/use-cases/createTheme.d.ts +5 -0
  105. package/dist/features/theme/application/use-cases/createTheme.d.ts.map +1 -0
  106. package/dist/features/theme/application/use-cases/createTheme.js +56 -0
  107. package/dist/features/theme/application/use-cases/createTheme.js.map +1 -0
  108. package/dist/features/theme/constants.d.ts +10 -0
  109. package/dist/features/theme/constants.d.ts.map +1 -0
  110. package/dist/{theme/defaultTokens.js → features/theme/constants.js} +9 -2
  111. package/dist/features/theme/constants.js.map +1 -0
  112. package/dist/{theme → features/theme/domain}/createSurfaceColorDiagnosticCollector.d.ts +1 -1
  113. package/dist/features/theme/domain/createSurfaceColorDiagnosticCollector.d.ts.map +1 -0
  114. package/dist/features/theme/domain/createSurfaceColorDiagnosticCollector.js.map +1 -0
  115. package/dist/{theme → features/theme/domain}/createSurfaceSemanticPolicy.d.ts +1 -1
  116. package/dist/features/theme/domain/createSurfaceSemanticPolicy.d.ts.map +1 -0
  117. package/dist/{theme → features/theme/domain}/createSurfaceSemanticPolicy.js +1 -1
  118. package/dist/features/theme/domain/createSurfaceSemanticPolicy.js.map +1 -0
  119. package/dist/features/theme/domain/generatePalette.d.ts +10 -0
  120. package/dist/features/theme/domain/generatePalette.d.ts.map +1 -0
  121. package/dist/{theme/colorEngine.js → features/theme/domain/generatePalette.js} +2 -10
  122. package/dist/features/theme/domain/generatePalette.js.map +1 -0
  123. package/dist/{theme → features/theme/domain}/resolveRoleSemantics.d.ts +1 -1
  124. package/dist/features/theme/domain/resolveRoleSemantics.d.ts.map +1 -0
  125. package/dist/{theme → features/theme/domain}/resolveRoleSemantics.js +1 -1
  126. package/dist/features/theme/domain/resolveRoleSemantics.js.map +1 -0
  127. package/dist/features/theme/domain/resolveSemanticColors.d.ts +4 -0
  128. package/dist/features/theme/domain/resolveSemanticColors.d.ts.map +1 -0
  129. package/dist/features/theme/domain/resolveSemanticColors.js +10 -0
  130. package/dist/features/theme/domain/resolveSemanticColors.js.map +1 -0
  131. package/dist/{theme → features/theme/domain}/resolveSurfaceSemanticModel.d.ts +1 -1
  132. package/dist/features/theme/domain/resolveSurfaceSemanticModel.d.ts.map +1 -0
  133. package/dist/features/theme/domain/resolveSurfaceSemanticModel.js.map +1 -0
  134. package/dist/features/theme/public.d.ts +3 -0
  135. package/dist/features/theme/public.d.ts.map +1 -0
  136. package/dist/features/theme/public.js +2 -0
  137. package/dist/features/theme/public.js.map +1 -0
  138. package/dist/features/theme/runtime.d.ts +5 -0
  139. package/dist/features/theme/runtime.d.ts.map +1 -0
  140. package/dist/features/theme/runtime.js +4 -0
  141. package/dist/features/theme/runtime.js.map +1 -0
  142. package/dist/{theme → features/theme/utils}/resolveGlobalTokens.d.ts +1 -1
  143. package/dist/features/theme/utils/resolveGlobalTokens.d.ts.map +1 -0
  144. package/dist/{theme → features/theme/utils}/resolveGlobalTokens.js +1 -1
  145. package/dist/features/theme/utils/resolveGlobalTokens.js.map +1 -0
  146. package/dist/{theme → features/theme/utils}/resolveHeadingTokenOverrides.d.ts +1 -1
  147. package/dist/features/theme/utils/resolveHeadingTokenOverrides.d.ts.map +1 -0
  148. package/dist/features/theme/utils/resolveHeadingTokenOverrides.js.map +1 -0
  149. package/dist/features/theme/utils/resolveNumericTokenOverrides.d.ts.map +1 -0
  150. package/dist/features/theme/utils/resolveNumericTokenOverrides.js.map +1 -0
  151. package/dist/{theme → features/theme/utils}/resolveToken.d.ts +2 -8
  152. package/dist/features/theme/utils/resolveToken.d.ts.map +1 -0
  153. package/dist/features/theme/utils/resolveToken.js +10 -0
  154. package/dist/features/theme/utils/resolveToken.js.map +1 -0
  155. package/dist/{theme → features/theme/utils}/resolveWeightTokenOverrides.d.ts +1 -1
  156. package/dist/features/theme/utils/resolveWeightTokenOverrides.d.ts.map +1 -0
  157. package/dist/{theme → features/theme/utils}/resolveWeightTokenOverrides.js +3 -5
  158. package/dist/features/theme/utils/resolveWeightTokenOverrides.js.map +1 -0
  159. package/dist/features/toast/adapters/inbound/Toast.d.ts.map +1 -1
  160. package/dist/features/toast/adapters/inbound/Toast.js +1 -1
  161. package/dist/features/toast/adapters/inbound/Toast.js.map +1 -1
  162. package/dist/features/tooltip/adapters/inbound/Tooltip.d.ts.map +1 -1
  163. package/dist/features/tooltip/adapters/inbound/Tooltip.js +1 -1
  164. package/dist/features/tooltip/adapters/inbound/Tooltip.js.map +1 -1
  165. package/dist/features/typography/adapters/inbound/Heading.d.ts +2 -2
  166. package/dist/features/typography/adapters/inbound/Heading.d.ts.map +1 -1
  167. package/dist/features/typography/adapters/inbound/Heading.js +4 -20
  168. package/dist/features/typography/adapters/inbound/Heading.js.map +1 -1
  169. package/dist/features/typography/adapters/inbound/Text.d.ts +1 -1
  170. package/dist/features/typography/adapters/inbound/Text.d.ts.map +1 -1
  171. package/dist/features/typography/adapters/inbound/Text.js +3 -20
  172. package/dist/features/typography/adapters/inbound/Text.js.map +1 -1
  173. package/dist/features/typography/utils/resolveHeadingTextStyle.d.ts +2 -2
  174. package/dist/features/typography/utils/resolveHeadingTextStyle.d.ts.map +1 -1
  175. package/dist/features/typography/utils/resolveHeadingTextStyle.js.map +1 -1
  176. package/dist/index.d.ts +9 -10
  177. package/dist/index.d.ts.map +1 -1
  178. package/dist/index.js +4 -6
  179. package/dist/index.js.map +1 -1
  180. package/dist/internal/resolvers/resolveControlSize.d.ts +1 -1
  181. package/dist/internal/resolvers/resolveControlSize.js.map +1 -1
  182. package/dist/internal/resolvers/resolveFieldPresentation.d.ts +1 -1
  183. package/dist/internal/resolvers/resolveFieldPresentation.d.ts.map +1 -1
  184. package/dist/internal/resolvers/resolveFieldPresentation.js.map +1 -1
  185. package/dist/internal/resolvers/resolveIconSize.d.ts +1 -1
  186. package/dist/internal/resolvers/resolveIconSize.js.map +1 -1
  187. package/dist/internal/resolvers/resolveInteractiveColors.d.ts +2 -2
  188. package/dist/internal/resolvers/resolveInteractiveColors.d.ts.map +1 -1
  189. package/dist/internal/resolvers/resolveInteractiveColors.js.map +1 -1
  190. package/dist/internal/resolvers/resolveSelectionControlColors.d.ts +2 -2
  191. package/dist/internal/resolvers/resolveSelectionControlColors.d.ts.map +1 -1
  192. package/dist/internal/resolvers/resolveSelectionControlColors.js.map +1 -1
  193. package/dist/internal/resolvers/resolveSurfaceColor.d.ts +2 -2
  194. package/dist/internal/resolvers/resolveSurfaceColor.d.ts.map +1 -1
  195. package/dist/internal/resolvers/resolveSurfaceColor.js.map +1 -1
  196. package/dist/internal/resolvers/resolveTextColor.d.ts +2 -2
  197. package/dist/internal/resolvers/resolveTextColor.d.ts.map +1 -1
  198. package/dist/internal/resolvers/resolveTextColor.js.map +1 -1
  199. package/dist/internal/resolvers/resolveTextStyles.d.ts +1 -1
  200. package/dist/internal/resolvers/resolveTextStyles.js.map +1 -1
  201. package/dist/types/accordion.d.ts +1 -1
  202. package/dist/types/accordion.d.ts.map +1 -1
  203. package/dist/types/accordion.js.map +1 -1
  204. package/dist/types/badge.d.ts +1 -1
  205. package/dist/types/badge.d.ts.map +1 -1
  206. package/dist/types/badge.js.map +1 -1
  207. package/dist/types/button.d.ts +1 -1
  208. package/dist/types/button.d.ts.map +1 -1
  209. package/dist/types/button.js.map +1 -1
  210. package/dist/types/checkbox.d.ts +1 -1
  211. package/dist/types/checkbox.d.ts.map +1 -1
  212. package/dist/types/checkbox.js.map +1 -1
  213. package/dist/types/font.d.ts +13 -0
  214. package/dist/types/font.d.ts.map +1 -0
  215. package/dist/types/font.js +2 -0
  216. package/dist/types/font.js.map +1 -0
  217. package/dist/types/icon.d.ts +1 -1
  218. package/dist/types/icon.d.ts.map +1 -1
  219. package/dist/types/icon.js.map +1 -1
  220. package/dist/types/image.d.ts +1 -1
  221. package/dist/types/image.d.ts.map +1 -1
  222. package/dist/types/image.js.map +1 -1
  223. package/dist/types/interactionPolicy.d.ts.map +1 -0
  224. package/dist/types/interactionPolicy.js.map +1 -0
  225. package/dist/types/layout.d.ts +1 -1
  226. package/dist/types/layout.d.ts.map +1 -1
  227. package/dist/types/layout.js.map +1 -1
  228. package/dist/types/list.d.ts +1 -1
  229. package/dist/types/list.d.ts.map +1 -1
  230. package/dist/types/list.js.map +1 -1
  231. package/dist/types/modal.d.ts +1 -1
  232. package/dist/types/modal.d.ts.map +1 -1
  233. package/dist/types/modal.js.map +1 -1
  234. package/dist/types/popover.d.ts +1 -1
  235. package/dist/types/popover.d.ts.map +1 -1
  236. package/dist/types/popover.js.map +1 -1
  237. package/dist/types/popoverMenu.d.ts +1 -1
  238. package/dist/types/popoverMenu.d.ts.map +1 -1
  239. package/dist/types/popoverMenu.js.map +1 -1
  240. package/dist/types/pressable.d.ts +1 -1
  241. package/dist/types/pressable.d.ts.map +1 -1
  242. package/dist/types/pressable.js.map +1 -1
  243. package/dist/types/radio.d.ts +1 -1
  244. package/dist/types/radio.d.ts.map +1 -1
  245. package/dist/types/radio.js.map +1 -1
  246. package/dist/types/surfaceColor.d.ts +6 -0
  247. package/dist/types/surfaceColor.d.ts.map +1 -0
  248. package/dist/types/surfaceColor.js +2 -0
  249. package/dist/types/surfaceColor.js.map +1 -0
  250. package/dist/types/switch.d.ts +1 -1
  251. package/dist/types/switch.d.ts.map +1 -1
  252. package/dist/types/switch.js.map +1 -1
  253. package/dist/types/tabs.d.ts +1 -1
  254. package/dist/types/tabs.d.ts.map +1 -1
  255. package/dist/types/tabs.js.map +1 -1
  256. package/dist/types/text-input.d.ts +1 -1
  257. package/dist/types/text-input.d.ts.map +1 -1
  258. package/dist/types/text-input.js.map +1 -1
  259. package/dist/{theme/types.d.ts → types/theme.d.ts} +19 -3
  260. package/dist/types/theme.d.ts.map +1 -0
  261. package/dist/types/theme.js +2 -0
  262. package/dist/types/theme.js.map +1 -0
  263. package/dist/types/toast.d.ts +2 -2
  264. package/dist/types/toast.d.ts.map +1 -1
  265. package/dist/types/toast.js.map +1 -1
  266. package/dist/types/tooltip.d.ts +1 -1
  267. package/dist/types/tooltip.d.ts.map +1 -1
  268. package/dist/types/tooltip.js.map +1 -1
  269. package/dist/types/typography.d.ts +1 -1
  270. package/dist/types/typography.d.ts.map +1 -1
  271. package/dist/types/typography.js.map +1 -1
  272. package/dist/utils/resolveSpacing.d.ts +1 -1
  273. package/dist/utils/resolveSpacing.d.ts.map +1 -1
  274. package/dist/utils/resolveSpacing.js +1 -1
  275. package/dist/utils/resolveSpacing.js.map +1 -1
  276. package/dist/utils/resolveViewStyles.d.ts +1 -1
  277. package/dist/utils/resolveViewStyles.d.ts.map +1 -1
  278. package/dist/utils/resolveViewStyles.js +1 -1
  279. package/dist/utils/resolveViewStyles.js.map +1 -1
  280. package/package.json +8 -7
  281. package/src/constants/surfaceColor.test.ts +18 -0
  282. package/src/{surfaceColor.ts → constants/surfaceColor.ts} +0 -5
  283. package/src/features/app-bar/adapters/inbound/AppBar.tsx +1 -1
  284. package/src/features/badge/adapters/inbound/Badge.tsx +1 -1
  285. package/src/features/button/adapters/inbound/Button.tsx +2 -2
  286. package/src/features/button/adapters/inbound/IconButton.tsx +1 -1
  287. package/src/features/card/adapters/inbound/Card.tsx +1 -1
  288. package/src/features/font/adapters/inbound/FontProvider.tsx +27 -0
  289. package/src/features/font/adapters/inbound/FontRuntimeContext.tsx +12 -0
  290. package/src/features/font/adapters/inbound/useFontRuntime.ts +9 -0
  291. package/src/features/font/public.ts +2 -0
  292. package/src/features/form/checkbox/adapters/inbound/Checkbox.tsx +2 -2
  293. package/src/features/form/radio/adapters/inbound/Radio.tsx +2 -2
  294. package/src/features/form/switch/adapters/inbound/Switch.tsx +1 -1
  295. package/src/features/form/text-input/adapters/inbound/TextInput.tsx +1 -1
  296. package/src/features/form/text-input/utils/resolveTextInputPresentation.ts +1 -1
  297. package/src/features/icon/adapters/inbound/Icon.tsx +2 -2
  298. package/src/features/image/adapters/inbound/Image.tsx +1 -1
  299. package/src/features/image/utils/resolveImageProps.test.ts +1 -1
  300. package/src/features/image/utils/resolveImageStyle.ts +2 -2
  301. package/src/features/layout/adapters/inbound/Grid.tsx +1 -1
  302. package/src/features/layout/adapters/inbound/ScrollView.tsx +1 -1
  303. package/src/features/layout/adapters/inbound/View.tsx +1 -1
  304. package/src/features/list/adapters/inbound/ListItem.tsx +2 -2
  305. package/src/features/modal/adapters/inbound/Modal.tsx +1 -1
  306. package/src/features/popover-menu/adapters/inbound/PopoverMenu.tsx +1 -1
  307. package/src/features/pressable/adapters/inbound/Pressable.tsx +1 -1
  308. package/src/features/surface/adapters/inbound/Surface.tsx +1 -1
  309. package/src/features/tabs/adapters/inbound/Tab.tsx +1 -1
  310. package/src/features/theme/adapters/inbound/ThemeProvider.tsx +46 -0
  311. package/src/features/theme/adapters/inbound/ThemeRuntimeContext.tsx +14 -0
  312. package/src/features/theme/adapters/inbound/ThemeScope.test.tsx +52 -0
  313. package/src/features/theme/adapters/inbound/ThemeScope.tsx +29 -0
  314. package/src/features/theme/adapters/inbound/useTheme.ts +9 -0
  315. package/src/features/theme/application/use-cases/createTheme.ts +71 -0
  316. package/src/{theme → features/theme/application/use-cases}/createThemeOverrides.test.ts +8 -9
  317. package/src/{theme → features/theme/application/use-cases}/createThemeValidation.test.ts +4 -2
  318. package/src/features/theme/constants.ts +68 -0
  319. package/src/{theme → features/theme/domain}/createSurfaceColorDiagnosticCollector.ts +4 -1
  320. package/src/{theme → features/theme/domain}/createSurfaceSemanticPolicy.ts +2 -2
  321. package/src/features/theme/domain/generatePalette.test.ts +294 -0
  322. package/src/{theme/colorEngine.ts → features/theme/domain/generatePalette.ts} +3 -30
  323. package/src/{theme → features/theme/domain}/inverseSemantics.test.ts +1 -1
  324. package/src/{theme → features/theme/domain}/resolveRoleSemantics.ts +2 -2
  325. package/src/features/theme/domain/resolveSemanticColors.ts +23 -0
  326. package/src/{theme → features/theme/domain}/resolveSurfaceSemanticModel.ts +4 -4
  327. package/src/{theme → features/theme}/public.test.ts +1 -1
  328. package/src/features/theme/public.ts +18 -0
  329. package/src/features/theme/runtime.test.ts +13 -0
  330. package/src/features/theme/runtime.ts +4 -0
  331. package/src/{theme → features/theme/utils}/resolveGlobalTokens.ts +2 -2
  332. package/src/{theme → features/theme/utils}/resolveHeadingTokenOverrides.ts +1 -1
  333. package/src/features/theme/utils/resolveToken.ts +16 -0
  334. package/src/{theme → features/theme/utils}/resolveWeightTokenOverrides.ts +12 -12
  335. package/src/features/toast/adapters/inbound/Toast.tsx +3 -3
  336. package/src/features/tooltip/adapters/inbound/Tooltip.tsx +1 -1
  337. package/src/features/typography/adapters/inbound/Heading.tsx +3 -30
  338. package/src/features/typography/adapters/inbound/Text.tsx +3 -23
  339. package/src/features/typography/utils/resolveHeadingTextStyle.test.ts +1 -1
  340. package/src/features/typography/utils/resolveHeadingTextStyle.ts +2 -2
  341. package/src/index.test.ts +11 -9
  342. package/src/index.ts +30 -15
  343. package/src/internal/resolvers/resolveControlSize.test.ts +1 -1
  344. package/src/internal/resolvers/resolveControlSize.ts +1 -1
  345. package/src/internal/resolvers/resolveFieldPresentation.ts +1 -1
  346. package/src/internal/resolvers/resolveIconSize.ts +1 -1
  347. package/src/internal/resolvers/resolveInteractiveColors.test.ts +1 -1
  348. package/src/internal/resolvers/resolveInteractiveColors.ts +2 -2
  349. package/src/internal/resolvers/resolveSelectionControlColors.test.ts +1 -1
  350. package/src/internal/resolvers/resolveSelectionControlColors.ts +2 -2
  351. package/src/internal/resolvers/resolveSurfaceColor.test.ts +1 -1
  352. package/src/internal/resolvers/resolveSurfaceColor.ts +2 -2
  353. package/src/internal/resolvers/resolveTextColor.test.ts +1 -1
  354. package/src/internal/resolvers/resolveTextColor.ts +2 -2
  355. package/src/internal/resolvers/resolveTextStyles.test.ts +1 -1
  356. package/src/internal/resolvers/resolveTextStyles.ts +1 -1
  357. package/src/structureOwnership.test.ts +16 -0
  358. package/src/types/accordion.ts +1 -1
  359. package/src/types/badge.ts +1 -1
  360. package/src/types/button.ts +1 -1
  361. package/src/types/checkbox.ts +1 -1
  362. package/src/types/font.ts +14 -0
  363. package/src/types/icon.ts +1 -1
  364. package/src/types/image.ts +1 -1
  365. package/src/types/interactionPolicy.test.ts +30 -0
  366. package/src/types/layout.ts +1 -1
  367. package/src/types/list.ts +1 -1
  368. package/src/types/modal.ts +1 -1
  369. package/src/types/popover.ts +1 -1
  370. package/src/types/popoverMenu.ts +1 -1
  371. package/src/types/pressable.ts +1 -1
  372. package/src/types/radio.ts +1 -1
  373. package/src/types/surfaceColor.test.ts +18 -0
  374. package/src/types/surfaceColor.ts +11 -0
  375. package/src/types/switch.ts +1 -1
  376. package/src/types/tabs.ts +1 -1
  377. package/src/types/text-input.ts +1 -1
  378. package/src/{theme/types.ts → types/theme.ts} +22 -13
  379. package/src/types/toast.ts +2 -2
  380. package/src/types/tooltip.ts +1 -1
  381. package/src/types/typography.ts +1 -1
  382. package/src/utils/resolveSpacing.ts +2 -2
  383. package/src/utils/resolveViewStyles.test.ts +1 -1
  384. package/src/utils/resolveViewStyles.ts +2 -2
  385. package/src/webAcceptance.test.tsx +1 -1
  386. package/dist/context/FontContext.d.ts +0 -20
  387. package/dist/context/FontContext.d.ts.map +0 -1
  388. package/dist/context/FontContext.js +0 -27
  389. package/dist/context/FontContext.js.map +0 -1
  390. package/dist/context/TranslationContext.d.ts +0 -22
  391. package/dist/context/TranslationContext.d.ts.map +0 -1
  392. package/dist/context/TranslationContext.js +0 -25
  393. package/dist/context/TranslationContext.js.map +0 -1
  394. package/dist/interactionPolicy.d.ts.map +0 -1
  395. package/dist/interactionPolicy.js.map +0 -1
  396. package/dist/surfaceColor.d.ts.map +0 -1
  397. package/dist/surfaceColor.js.map +0 -1
  398. package/dist/theme/ThemeContext.d.ts +0 -27
  399. package/dist/theme/ThemeContext.d.ts.map +0 -1
  400. package/dist/theme/ThemeContext.js +0 -59
  401. package/dist/theme/ThemeContext.js.map +0 -1
  402. package/dist/theme/colorEngine.d.ts +0 -16
  403. package/dist/theme/colorEngine.d.ts.map +0 -1
  404. package/dist/theme/colorEngine.js.map +0 -1
  405. package/dist/theme/createSurfaceColorDiagnosticCollector.d.ts.map +0 -1
  406. package/dist/theme/createSurfaceColorDiagnosticCollector.js.map +0 -1
  407. package/dist/theme/createSurfaceSemanticPolicy.d.ts.map +0 -1
  408. package/dist/theme/createSurfaceSemanticPolicy.js.map +0 -1
  409. package/dist/theme/createTheme.d.ts +0 -5
  410. package/dist/theme/createTheme.d.ts.map +0 -1
  411. package/dist/theme/createTheme.js +0 -49
  412. package/dist/theme/createTheme.js.map +0 -1
  413. package/dist/theme/defaultTokens.d.ts +0 -3
  414. package/dist/theme/defaultTokens.d.ts.map +0 -1
  415. package/dist/theme/defaultTokens.js.map +0 -1
  416. package/dist/theme/index.d.ts +0 -3
  417. package/dist/theme/index.d.ts.map +0 -1
  418. package/dist/theme/index.js +0 -3
  419. package/dist/theme/index.js.map +0 -1
  420. package/dist/theme/public.d.ts +0 -5
  421. package/dist/theme/public.d.ts.map +0 -1
  422. package/dist/theme/public.js +0 -5
  423. package/dist/theme/public.js.map +0 -1
  424. package/dist/theme/resolveGlobalTokens.d.ts.map +0 -1
  425. package/dist/theme/resolveGlobalTokens.js.map +0 -1
  426. package/dist/theme/resolveHeadingTokenOverrides.d.ts.map +0 -1
  427. package/dist/theme/resolveHeadingTokenOverrides.js.map +0 -1
  428. package/dist/theme/resolveNumericTokenOverrides.d.ts.map +0 -1
  429. package/dist/theme/resolveNumericTokenOverrides.js.map +0 -1
  430. package/dist/theme/resolveRoleSemantics.d.ts.map +0 -1
  431. package/dist/theme/resolveRoleSemantics.js.map +0 -1
  432. package/dist/theme/resolveSurfaceSemanticModel.d.ts.map +0 -1
  433. package/dist/theme/resolveSurfaceSemanticModel.js.map +0 -1
  434. package/dist/theme/resolveToken.d.ts.map +0 -1
  435. package/dist/theme/resolveToken.js +0 -19
  436. package/dist/theme/resolveToken.js.map +0 -1
  437. package/dist/theme/resolveWeightTokenOverrides.d.ts.map +0 -1
  438. package/dist/theme/resolveWeightTokenOverrides.js.map +0 -1
  439. package/dist/theme/surfaceColorPolicy.d.ts +0 -8
  440. package/dist/theme/surfaceColorPolicy.d.ts.map +0 -1
  441. package/dist/theme/surfaceColorPolicy.js +0 -8
  442. package/dist/theme/surfaceColorPolicy.js.map +0 -1
  443. package/dist/theme/types.d.ts.map +0 -1
  444. package/dist/theme/types.js +0 -2
  445. package/dist/theme/types.js.map +0 -1
  446. package/dist/utils/deepEqual.d.ts +0 -6
  447. package/dist/utils/deepEqual.d.ts.map +0 -1
  448. package/dist/utils/deepEqual.js +0 -36
  449. package/dist/utils/deepEqual.js.map +0 -1
  450. package/dist/utils/deepMerge.d.ts +0 -6
  451. package/dist/utils/deepMerge.d.ts.map +0 -1
  452. package/dist/utils/deepMerge.js +0 -26
  453. package/dist/utils/deepMerge.js.map +0 -1
  454. package/src/context/FontContext.tsx +0 -59
  455. package/src/context/TranslationContext.tsx +0 -50
  456. package/src/interactionPolicy.test.ts +0 -86
  457. package/src/surfaceColor.test.ts +0 -44
  458. package/src/theme/ThemeContext.tsx +0 -94
  459. package/src/theme/colorEngine.test.ts +0 -302
  460. package/src/theme/createTheme.ts +0 -60
  461. package/src/theme/defaultTokens.ts +0 -61
  462. package/src/theme/index.ts +0 -2
  463. package/src/theme/public.ts +0 -4
  464. package/src/theme/resolveToken.ts +0 -32
  465. package/src/theme/surfaceColorPolicy.ts +0 -7
  466. package/src/utils/deepEqual.ts +0 -34
  467. package/src/utils/deepMerge.test.ts +0 -113
  468. package/src/utils/deepMerge.ts +0 -29
  469. /package/dist/{surfaceColor.js → constants/surfaceColor.js} +0 -0
  470. /package/dist/{theme → features/theme/domain}/createSurfaceColorDiagnosticCollector.js +0 -0
  471. /package/dist/{theme → features/theme/domain}/resolveSurfaceSemanticModel.js +0 -0
  472. /package/dist/{theme → features/theme/utils}/resolveHeadingTokenOverrides.js +0 -0
  473. /package/dist/{theme → features/theme/utils}/resolveNumericTokenOverrides.d.ts +0 -0
  474. /package/dist/{theme → features/theme/utils}/resolveNumericTokenOverrides.js +0 -0
  475. /package/dist/{interactionPolicy.d.ts → types/interactionPolicy.d.ts} +0 -0
  476. /package/dist/{interactionPolicy.js → types/interactionPolicy.js} +0 -0
  477. /package/src/{theme → features/theme/utils}/resolveNumericTokenOverrides.ts +0 -0
  478. /package/src/{interactionPolicy.ts → types/interactionPolicy.ts} +0 -0
@@ -0,0 +1,18 @@
1
+ import { readFileSync } from 'node:fs';
2
+
3
+ import { describe, expect, it } from 'bun:test';
4
+
5
+ import { SURFACE_COLORS, SURFACE_EMPHASES } from '../constants/surfaceColor';
6
+ import type { SurfaceColor, SurfaceEmphasis } from './surfaceColor';
7
+
8
+ describe('surface color type ownership', () => {
9
+ it('derives public types from runtime constants and exports both deliberately', () => {
10
+ const color: SurfaceColor = 'danger';
11
+ const emphasis: SurfaceEmphasis = 'muted';
12
+ const indexSource = readFileSync(new URL('../index.ts', import.meta.url), 'utf8');
13
+ expect(SURFACE_COLORS).toContain(color);
14
+ expect(SURFACE_EMPHASES).toContain(emphasis);
15
+ expect(indexSource).toContain("from './constants/surfaceColor';");
16
+ expect(indexSource).toContain("from './types/surfaceColor';");
17
+ });
18
+ });
@@ -0,0 +1,11 @@
1
+ import type {
2
+ SURFACE_COLORS,
3
+ SURFACE_EMPHASES,
4
+ SURFACE_PALETTE_COLORS,
5
+ SURFACE_STATUS_COLORS,
6
+ } from '../constants/surfaceColor';
7
+
8
+ export type SurfacePaletteColor = (typeof SURFACE_PALETTE_COLORS)[number];
9
+ export type SurfaceStatusColor = (typeof SURFACE_STATUS_COLORS)[number];
10
+ export type SurfaceColor = (typeof SURFACE_COLORS)[number];
11
+ export type SurfaceEmphasis = (typeof SURFACE_EMPHASES)[number];
@@ -1,8 +1,8 @@
1
1
  import type React from 'react';
2
2
 
3
3
  import type { ControlSize } from '../internal/resolvers/resolveControlSize';
4
- import type { SurfaceColor } from '../surfaceColor';
5
4
  import type { PressableProps } from './pressable';
5
+ import type { SurfaceColor } from './surfaceColor';
6
6
 
7
7
  export interface SwitchProps extends Omit<
8
8
  PressableProps,
package/src/types/tabs.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type React from 'react';
2
2
 
3
- import type { InteractionPolicy } from '../interactionPolicy';
3
+ import type { InteractionPolicy } from './interactionPolicy';
4
4
 
5
5
  export interface TabsProps {
6
6
  children?: React.ReactNode;
@@ -5,8 +5,8 @@ import type {
5
5
  TextStyle,
6
6
  } from 'react-native';
7
7
 
8
- import type { InteractionPolicy } from '../interactionPolicy';
9
8
  import type { ControlSize } from '../internal/resolvers/resolveControlSize';
9
+ import type { InteractionPolicy } from './interactionPolicy';
10
10
 
11
11
  export interface TextInputProps extends Omit<
12
12
  ReactNativeTextInputProps,
@@ -9,19 +9,7 @@ import type {
9
9
  ThemeColorMode,
10
10
  } from '@ankhorage/color-theory';
11
11
  import type { ThemeConfig as ContractsThemeConfig } from '@ankhorage/contracts';
12
-
13
- export type {
14
- ColorHarmony,
15
- ColorSwatch,
16
- ColorSwatchStep,
17
- GeneratedColorRole,
18
- GeneratedThemeModeColors,
19
- GeneratedThemeSwatches,
20
- HexColor,
21
- SemanticColorReferenceMap,
22
- SemanticColorToken,
23
- } from '@ankhorage/color-theory';
24
- export type { ThemeConfig, ThemeModeConfig } from '@ankhorage/contracts';
12
+ import type { ReactNode } from 'react';
25
13
 
26
14
  export interface NeutralSemantics {
27
15
  bg: string;
@@ -242,3 +230,24 @@ export interface ThemeTokens {
242
230
  export interface SurfaceTheme extends ThemeTokens {
243
231
  config: ContractsThemeConfig;
244
232
  }
233
+
234
+ export type ThemeMode = 'light' | 'dark';
235
+
236
+ export interface ThemeRuntime {
237
+ theme: SurfaceTheme;
238
+ mode: ThemeMode;
239
+ setThemeConfig: (config: Partial<ContractsThemeConfig>) => void;
240
+ setMode: (mode: ThemeMode) => void;
241
+ }
242
+
243
+ export interface ThemeProviderProps {
244
+ children: ReactNode;
245
+ initialConfig?: Partial<ContractsThemeConfig>;
246
+ initialMode?: ThemeMode;
247
+ }
248
+
249
+ export interface ThemeScopeProps {
250
+ children: ReactNode;
251
+ themeConfig?: Partial<ContractsThemeConfig>;
252
+ mode?: ThemeMode;
253
+ }
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
 
3
- import type { InteractionPolicy } from '../interactionPolicy';
4
- import type { SurfaceStatusColor } from '../surfaceColor';
3
+ import type { InteractionPolicy } from './interactionPolicy';
4
+ import type { SurfaceStatusColor } from './surfaceColor';
5
5
 
6
6
  export type ToastStatus = 'default' | SurfaceStatusColor;
7
7
 
@@ -1,6 +1,6 @@
1
1
  import type React from 'react';
2
2
 
3
- import type { InteractionPolicy } from '../interactionPolicy';
3
+ import type { InteractionPolicy } from './interactionPolicy';
4
4
 
5
5
  export interface TooltipProps {
6
6
  children?: React.ReactNode;
@@ -2,7 +2,7 @@ import type React from 'react';
2
2
  import type { TextStyle } from 'react-native';
3
3
 
4
4
  import type { TextVariant, TextWeight } from '../internal/resolvers/resolveTextStyles';
5
- import type { SurfaceColor, SurfaceEmphasis } from '../surfaceColor';
5
+ import type { SurfaceColor, SurfaceEmphasis } from './surfaceColor';
6
6
 
7
7
  export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
8
8
 
@@ -1,6 +1,6 @@
1
- import { resolveToken } from '../theme/resolveToken';
2
- import type { SurfaceTheme } from '../theme/types';
1
+ import { resolveToken } from '../features/theme/utils/resolveToken';
3
2
  import type { SpaceValue } from '../types/layout';
3
+ import type { SurfaceTheme } from '../types/theme';
4
4
 
5
5
  /*** Resolves a numeric spacing value or a Surface spacing token. */
6
6
  export function resolveSpacing(
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, test } from 'bun:test';
2
2
 
3
- import type { SurfaceTheme } from '../theme/types';
3
+ import type { SurfaceTheme } from '../types/theme';
4
4
  import { resolveViewStyles } from './resolveViewStyles';
5
5
 
6
6
  const mockTheme = {
@@ -2,9 +2,9 @@ import type { ViewStyle } from 'react-native';
2
2
 
3
3
  import { resolveResponsive } from '../core/responsive/resolve';
4
4
  import type { Breakpoint } from '../core/responsive/types';
5
- import { resolveToken } from '../theme/resolveToken';
6
- import type { SurfaceTheme } from '../theme/types';
5
+ import { resolveToken } from '../features/theme/utils/resolveToken';
7
6
  import type { ColorValue, ViewStyleProps } from '../types/layout';
7
+ import type { SurfaceTheme } from '../types/theme';
8
8
  import { resolveSpacing } from './resolveSpacing';
9
9
 
10
10
  /*** Resolves responsive Surface View style props into one React Native view style. */
@@ -12,7 +12,7 @@ const { Grid, ScrollView, View } = await import('./features/layout/public');
12
12
  const { KeyboardAvoidingView } = await import('./features/keyboard-avoiding-view/public');
13
13
  const { Show } = await import('./core/responsive/Show');
14
14
  const { OverlayProvider } = await import('./internal/overlay/OverlayProvider');
15
- const { ThemeProvider } = await import('./theme/ThemeContext');
15
+ const { ThemeProvider } = await import('./features/theme/runtime');
16
16
 
17
17
  function ResponsiveAcceptanceTree() {
18
18
  return (
@@ -1,20 +0,0 @@
1
- import React from 'react';
2
- /**
3
- * Runtime font state consumed by theme and text primitives.
4
- */
5
- export interface FontRuntime {
6
- /** true when the active font assets have finished loading */
7
- fontsLoaded: boolean;
8
- /** The currently active font family id */
9
- activeFontId: string | null;
10
- /** Update the active font family id */
11
- setActiveFontId: (id: string) => void;
12
- }
13
- export declare function FontProvider(props: {
14
- fontsLoaded: boolean;
15
- activeFontId?: string | null;
16
- children: React.ReactNode;
17
- onActiveFontChange?: (id: string) => void;
18
- }): React.JSX.Element;
19
- export declare function useFontContext(): FontRuntime;
20
- //# sourceMappingURL=FontContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FontContext.d.ts","sourceRoot":"","sources":["../../src/context/FontContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgD,MAAM,OAAO,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,WAAW,EAAE,OAAO,CAAC;IAErB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,uCAAuC;IACvC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAYD,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,qBAuBA;AAED,wBAAgB,cAAc,IAAI,WAAW,CAE5C"}
@@ -1,27 +0,0 @@
1
- import React, { createContext, use, useMemo, useState } from 'react';
2
- const fallbackRuntime = {
3
- fontsLoaded: true,
4
- activeFontId: null,
5
- setActiveFontId: () => {
6
- /* fallback */
7
- },
8
- };
9
- const FontContext = createContext(fallbackRuntime);
10
- export function FontProvider(props) {
11
- const { fontsLoaded, activeFontId: initialActiveFontId = null, children, onActiveFontChange, } = props;
12
- const [activeFontId, setActiveFontIdState] = useState(initialActiveFontId);
13
- const value = useMemo(() => ({
14
- fontsLoaded,
15
- activeFontId,
16
- setActiveFontId: (id) => {
17
- setActiveFontIdState(id);
18
- if (onActiveFontChange)
19
- onActiveFontChange(id);
20
- },
21
- }), [fontsLoaded, activeFontId, onActiveFontChange]);
22
- return <FontContext value={value}>{children}</FontContext>;
23
- }
24
- export function useFontContext() {
25
- return use(FontContext);
26
- }
27
- //# sourceMappingURL=FontContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FontContext.js","sourceRoot":"","sources":["../../src/context/FontContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAgBrE,MAAM,eAAe,GAAgB;IACnC,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,GAAG,EAAE;QACpB,cAAc;IAChB,CAAC;CACF,CAAC;AAEF,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAEnD,MAAM,UAAU,YAAY,CAAC,KAK5B;IACC,MAAM,EACJ,WAAW,EACX,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,QAAQ,EACR,kBAAkB,GACnB,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAE3E,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,WAAW;QACX,YAAY;QACZ,eAAe,EAAE,CAAC,EAAU,EAAE,EAAE;YAC9B,oBAAoB,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,kBAAkB;gBAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;KACF,CAAC,EACF,CAAC,WAAW,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAChD,CAAC;IAEF,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import React, { createContext, use, useMemo, useState } from 'react';\n\n/**\n * Runtime font state consumed by theme and text primitives.\n */\nexport interface FontRuntime {\n /** true when the active font assets have finished loading */\n fontsLoaded: boolean;\n\n /** The currently active font family id */\n activeFontId: string | null;\n\n /** Update the active font family id */\n setActiveFontId: (id: string) => void;\n}\n\nconst fallbackRuntime: FontRuntime = {\n fontsLoaded: true,\n activeFontId: null,\n setActiveFontId: () => {\n /* fallback */\n },\n};\n\nconst FontContext = createContext(fallbackRuntime);\n\nexport function FontProvider(props: {\n fontsLoaded: boolean;\n activeFontId?: string | null;\n children: React.ReactNode;\n onActiveFontChange?: (id: string) => void;\n}) {\n const {\n fontsLoaded,\n activeFontId: initialActiveFontId = null,\n children,\n onActiveFontChange,\n } = props;\n\n const [activeFontId, setActiveFontIdState] = useState(initialActiveFontId);\n\n const value = useMemo<FontRuntime>(\n () => ({\n fontsLoaded,\n activeFontId,\n setActiveFontId: (id: string) => {\n setActiveFontIdState(id);\n if (onActiveFontChange) onActiveFontChange(id);\n },\n }),\n [fontsLoaded, activeFontId, onActiveFontChange],\n );\n\n return <FontContext value={value}>{children}</FontContext>;\n}\n\nexport function useFontContext(): FontRuntime {\n return use(FontContext);\n}\n"]}
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- /**
3
- * Minimal translation runtime surface.
4
- * Do not import i18next types here; keep Surface runtime-agnostic.
5
- */
6
- export interface I18nInstance {
7
- changeLanguage: (lng: string) => Promise<unknown>;
8
- language?: string;
9
- t?: Translator;
10
- }
11
- export type Translator = (key: string, options?: Record<string, unknown>) => string;
12
- export interface TranslationRuntime {
13
- t: Translator;
14
- i18n: I18nInstance | null;
15
- }
16
- export declare function TranslationProvider(props: {
17
- t: Translator;
18
- i18n?: I18nInstance | null;
19
- children: React.ReactNode;
20
- }): React.JSX.Element;
21
- export declare function useTranslationContext(): TranslationRuntime;
22
- //# sourceMappingURL=TranslationContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TranslationContext.d.ts","sourceRoot":"","sources":["../../src/context/TranslationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,UAAU,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,UAAU,CAAC;IACd,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;CAC3B;AASD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,CAAC,EAAE,UAAU,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,qBAeA;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D"}
@@ -1,25 +0,0 @@
1
- import React, { createContext, use } from 'react';
2
- const fallbackRuntime = {
3
- t: (key) => key,
4
- i18n: null,
5
- };
6
- const TranslationContext = createContext(fallbackRuntime);
7
- export function TranslationProvider(props) {
8
- const { t, i18n, children } = props;
9
- const value = {
10
- t: (key, options) => {
11
- if (i18n?.t) {
12
- const result = i18n.t(key, options);
13
- if (result !== key)
14
- return result;
15
- }
16
- return t(key, options);
17
- },
18
- i18n: i18n ?? null,
19
- };
20
- return <TranslationContext value={value}>{children}</TranslationContext>;
21
- }
22
- export function useTranslationContext() {
23
- return use(TranslationContext);
24
- }
25
- //# sourceMappingURL=TranslationContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TranslationContext.js","sourceRoot":"","sources":["../../src/context/TranslationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAmBlD,MAAM,eAAe,GAAuB;IAC1C,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;IACf,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAE1D,MAAM,UAAU,mBAAmB,CAAC,KAInC;IACC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEpC,MAAM,KAAK,GAAuB;QAChC,CAAC,EAAE,CAAC,GAAW,EAAE,OAAiC,EAAE,EAAE;YACpD,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACpC,IAAI,MAAM,KAAK,GAAG;oBAAE,OAAO,MAAM,CAAC;YACpC,CAAC;YACD,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,EAAE,IAAI,IAAI,IAAI;KACnB,CAAC;IAEF,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACjC,CAAC","sourcesContent":["import React, { createContext, use } from 'react';\n\n/**\n * Minimal translation runtime surface.\n * Do not import i18next types here; keep Surface runtime-agnostic.\n */\nexport interface I18nInstance {\n changeLanguage: (lng: string) => Promise<unknown>;\n language?: string;\n t?: Translator;\n}\n\nexport type Translator = (key: string, options?: Record<string, unknown>) => string;\n\nexport interface TranslationRuntime {\n t: Translator;\n i18n: I18nInstance | null;\n}\n\nconst fallbackRuntime: TranslationRuntime = {\n t: (key) => key,\n i18n: null,\n};\n\nconst TranslationContext = createContext(fallbackRuntime);\n\nexport function TranslationProvider(props: {\n t: Translator;\n i18n?: I18nInstance | null;\n children: React.ReactNode;\n}) {\n const { t, i18n, children } = props;\n\n const value: TranslationRuntime = {\n t: (key: string, options?: Record<string, unknown>) => {\n if (i18n?.t) {\n const result = i18n.t(key, options);\n if (result !== key) return result;\n }\n return t(key, options);\n },\n i18n: i18n ?? null,\n };\n\n return <TranslationContext value={value}>{children}</TranslationContext>;\n}\n\nexport function useTranslationContext(): TranslationRuntime {\n return use(TranslationContext);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactionPolicy.d.ts","sourceRoot":"","sources":["../src/interactionPolicy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactionPolicy.js","sourceRoot":"","sources":["../src/interactionPolicy.ts"],"names":[],"mappings":"","sourcesContent":["export type InteractionPolicy = 'enabled' | 'passive';\n\nexport interface InteractionPolicyProps {\n interactionPolicy?: InteractionPolicy;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"surfaceColor.d.ts","sourceRoot":"","sources":["../src/surfaceColor.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,wEAMzB,CAAC;AAEX,eAAO,MAAM,qBAAqB,kDAAmD,CAAC;AAEtF,eAAO,MAAM,cAAc,yHAIjB,CAAC;AAEX,eAAO,MAAM,gBAAgB,oDAAqD,CAAC;AAEnF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AACxE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"surfaceColor.js","sourceRoot":"","sources":["../src/surfaceColor.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS;IACT,WAAW;IACX,UAAU;IACV,YAAY;IACZ,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAEtF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,GAAG,sBAAsB;IACzB,GAAG,qBAAqB;IACxB,QAAQ;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC","sourcesContent":["export const SURFACE_PALETTE_COLORS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'quaternary',\n 'neutral',\n] as const;\n\nexport const SURFACE_STATUS_COLORS = ['success', 'warning', 'error', 'info'] as const;\n\nexport const SURFACE_COLORS = [\n ...SURFACE_PALETTE_COLORS,\n ...SURFACE_STATUS_COLORS,\n 'danger',\n] as const;\n\nexport const SURFACE_EMPHASES = ['default', 'muted', 'subtle', 'inverse'] as const;\n\nexport type SurfacePaletteColor = (typeof SURFACE_PALETTE_COLORS)[number];\nexport type SurfaceStatusColor = (typeof SURFACE_STATUS_COLORS)[number];\nexport type SurfaceColor = (typeof SURFACE_COLORS)[number];\nexport type SurfaceEmphasis = (typeof SURFACE_EMPHASES)[number];\n"]}
@@ -1,27 +0,0 @@
1
- import React from 'react';
2
- import type { SurfaceTheme, ThemeConfig } from './types';
3
- export declare const ThemeContext: React.Context<{
4
- theme: SurfaceTheme;
5
- mode: "light" | "dark";
6
- setThemeConfig: (config: Partial<ThemeConfig>) => void;
7
- setMode: (mode: "light" | "dark") => void;
8
- _hasProvider?: boolean;
9
- }>;
10
- export declare const ThemeProvider: ({ children, initialConfig, initialMode, }: {
11
- children: React.ReactNode;
12
- initialConfig?: Partial<ThemeConfig>;
13
- initialMode?: "light" | "dark";
14
- }) => React.JSX.Element;
15
- export declare const useTheme: () => {
16
- theme: SurfaceTheme;
17
- mode: "light" | "dark";
18
- setThemeConfig: (config: Partial<ThemeConfig>) => void;
19
- setMode: (mode: "light" | "dark") => void;
20
- _hasProvider?: boolean;
21
- };
22
- export declare const useThemeConfig: () => (config: Partial<ThemeConfig>) => void;
23
- export declare const useThemeMode: () => {
24
- mode: "light" | "dark";
25
- setMode: (mode: "light" | "dark") => void;
26
- };
27
- //# sourceMappingURL=ThemeContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAQ3D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAIzD,eAAO,MAAM,YAAY;WAChB,YAAY;UACb,OAAO,GAAG,MAAM;oBACN,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI;aAC7C,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI;mBAC1B,OAAO;EAWtB,CAAC;AAEH,eAAO,MAAM,aAAa,GAAI,2CAI3B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAChC,sBAyCA,CAAC;AAEF,eAAO,MAAM,QAAQ;WApEZ,YAAY;UACb,OAAO,GAAG,MAAM;oBACN,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI;aAC7C,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI;mBAC1B,OAAO;CAkEvB,CAAC;AAEF,eAAO,MAAM,cAAc,iBAtEA,OAAO,CAAC,WAAW,CAAC,KAAK,IAyEnD,CAAC;AAEF,eAAO,MAAM,YAAY;;oBA1EP,OAAO,GAAG,MAAM,KAAK,IAAI;CA6E1C,CAAC"}
@@ -1,59 +0,0 @@
1
- import React, { createContext, use, useMemo } from 'react';
2
- import { useFontContext } from '../context/FontContext';
3
- import { ResponsiveProvider } from '../core/responsive/ResponsiveProvider';
4
- import { OverlayProvider } from '../internal/overlay/OverlayProvider';
5
- import { isDeepEqual } from '../utils/deepEqual';
6
- import { deepMerge } from '../utils/deepMerge';
7
- import { createTheme } from './createTheme';
8
- const defaultTheme = createTheme();
9
- export const ThemeContext = createContext({
10
- theme: defaultTheme,
11
- mode: 'light',
12
- setThemeConfig: () => {
13
- /* fallback */
14
- },
15
- setMode: () => {
16
- /* fallback */
17
- },
18
- _hasProvider: false,
19
- });
20
- export const ThemeProvider = ({ children, initialConfig, initialMode = 'light', }) => {
21
- const [config, setConfig] = React.useState(() => initialConfig ? deepMerge(defaultTheme.config, initialConfig) : defaultTheme.config);
22
- const [mode, setMode] = React.useState(initialMode);
23
- const { activeFontId } = useFontContext();
24
- React.useEffect(() => {
25
- if (initialConfig) {
26
- setConfig((prev) => {
27
- const merged = deepMerge(prev, initialConfig);
28
- if (isDeepEqual(prev, merged))
29
- return prev;
30
- return merged;
31
- });
32
- }
33
- }, [initialConfig]);
34
- const theme = useMemo(() => createTheme(config, mode, activeFontId), [config, mode, activeFontId]);
35
- const value = useMemo(() => ({
36
- theme,
37
- mode,
38
- setThemeConfig: (newConfig) => setConfig((prev) => deepMerge(prev, newConfig)),
39
- setMode,
40
- _hasProvider: true,
41
- }), [theme, mode]);
42
- return (<ResponsiveProvider>
43
- <ThemeContext value={value}>
44
- <OverlayProvider>{children}</OverlayProvider>
45
- </ThemeContext>
46
- </ResponsiveProvider>);
47
- };
48
- export const useTheme = () => {
49
- return use(ThemeContext);
50
- };
51
- export const useThemeConfig = () => {
52
- const { setThemeConfig } = useTheme();
53
- return setThemeConfig;
54
- };
55
- export const useThemeMode = () => {
56
- const { mode, setMode } = useTheme();
57
- return { mode, setMode };
58
- };
59
- //# sourceMappingURL=ThemeContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThemeContext.js","sourceRoot":"","sources":["../../src/theme/ThemeContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, use, useMemo } from 'react';\n\nimport { useFontContext } from '../context/FontContext';\nimport { ResponsiveProvider } from '../core/responsive/ResponsiveProvider';\nimport { OverlayProvider } from '../internal/overlay/OverlayProvider';\nimport { isDeepEqual } from '../utils/deepEqual';\nimport { deepMerge } from '../utils/deepMerge';\nimport { createTheme } from './createTheme';\nimport type { SurfaceTheme, ThemeConfig } from './types';\n\nconst defaultTheme = createTheme();\n\nexport const ThemeContext = createContext<{\n theme: SurfaceTheme;\n mode: 'light' | 'dark';\n setThemeConfig: (config: Partial<ThemeConfig>) => void;\n setMode: (mode: 'light' | 'dark') => void;\n _hasProvider?: boolean;\n}>({\n theme: defaultTheme,\n mode: 'light',\n setThemeConfig: () => {\n /* fallback */\n },\n setMode: () => {\n /* fallback */\n },\n _hasProvider: false,\n});\n\nexport const ThemeProvider = ({\n children,\n initialConfig,\n initialMode = 'light',\n}: {\n children: React.ReactNode;\n initialConfig?: Partial<ThemeConfig>;\n initialMode?: 'light' | 'dark';\n}) => {\n const [config, setConfig] = React.useState<ThemeConfig>(() =>\n initialConfig ? deepMerge(defaultTheme.config, initialConfig) : defaultTheme.config,\n );\n const [mode, setMode] = React.useState<'light' | 'dark'>(initialMode);\n const { activeFontId } = useFontContext();\n\n React.useEffect(() => {\n if (initialConfig) {\n setConfig((prev) => {\n const merged = deepMerge(prev, initialConfig);\n if (isDeepEqual(prev, merged)) return prev;\n return merged;\n });\n }\n }, [initialConfig]);\n\n const theme = useMemo(\n () => createTheme(config, mode, activeFontId),\n [config, mode, activeFontId],\n );\n\n const value = useMemo(\n () => ({\n theme,\n mode,\n setThemeConfig: (newConfig: Partial<ThemeConfig>) =>\n setConfig((prev) => deepMerge(prev, newConfig)),\n setMode,\n _hasProvider: true,\n }),\n [theme, mode],\n );\n\n return (\n <ResponsiveProvider>\n <ThemeContext value={value}>\n <OverlayProvider>{children}</OverlayProvider>\n </ThemeContext>\n </ResponsiveProvider>\n );\n};\n\nexport const useTheme = () => {\n return use(ThemeContext);\n};\n\nexport const useThemeConfig = () => {\n const { setThemeConfig } = useTheme();\n return setThemeConfig;\n};\n\nexport const useThemeMode = () => {\n const { mode, setMode } = useTheme();\n return { mode, setMode };\n};\n"]}
@@ -1,16 +0,0 @@
1
- import type { GeneratedThemeModeColors, GeneratedThemeSwatches, HexColor, SemanticColorReferenceMap, SemanticColorToken, ThemeColorMode } from '@ankhorage/color-theory';
2
- import type { ThemeConfig } from '@ankhorage/contracts';
3
- import type { SurfaceColorDiagnostics, ThemeSemantics, ThemeTokens } from './types';
4
- /**
5
- * Surface semantic resolver: maps color-theory SemanticColorToken references
6
- * to hex values from the generated swatches.
7
- */
8
- export type SurfaceSemanticColors = Record<SemanticColorToken, HexColor>;
9
- export declare function resolveSemanticColors(generated: GeneratedThemeModeColors, references: SemanticColorReferenceMap): SurfaceSemanticColors;
10
- export declare function generatePalette(config: ThemeConfig, mode?: ThemeColorMode): {
11
- colors: ThemeTokens['colors'];
12
- swatches: GeneratedThemeSwatches;
13
- semantics: ThemeSemantics;
14
- colorDiagnostics: SurfaceColorDiagnostics;
15
- };
16
- //# sourceMappingURL=colorEngine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"colorEngine.d.ts","sourceRoot":"","sources":["../../src/theme/colorEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,sBAAsB,EACtB,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAOjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEpF;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAEzE,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,wBAAwB,EACnC,UAAU,EAAE,yBAAyB,GACpC,qBAAqB,CAUvB;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE,cAAwB,GAC7B;IACD,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,SAAS,EAAE,cAAc,CAAC;IAC1B,gBAAgB,EAAE,uBAAuB,CAAC;CAC3C,CA0CA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"colorEngine.js","sourceRoot":"","sources":["../../src/theme/colorEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n GeneratedThemeModeColors,\n GeneratedThemeSwatches,\n HexColor,\n SemanticColorReferenceMap,\n SemanticColorToken,\n ThemeColorMode,\n} from '@ankhorage/color-theory';\nimport {\n DARK_SEMANTIC_COLOR_REFERENCES,\n generateThemeModeColors,\n LIGHT_SEMANTIC_COLOR_REFERENCES,\n parseHexColorOrThrow,\n} from '@ankhorage/color-theory';\nimport type { ThemeConfig } from '@ankhorage/contracts';\n\nimport { resolveSurfaceSemanticModel } from './resolveSurfaceSemanticModel';\nimport type { SurfaceColorDiagnostics, ThemeSemantics, ThemeTokens } from './types';\n\n/**\n * Surface semantic resolver: maps color-theory SemanticColorToken references\n * to hex values from the generated swatches.\n */\nexport type SurfaceSemanticColors = Record<SemanticColorToken, HexColor>;\n\nexport function resolveSemanticColors(\n generated: GeneratedThemeModeColors,\n references: SemanticColorReferenceMap,\n): SurfaceSemanticColors {\n return Object.fromEntries(\n Object.entries(references).map(([token, ref]) => {\n const swatch = generated.swatches[ref.role];\n if (!swatch) {\n throw new Error(`Missing swatch for role '${ref.role}' (token: '${token}')`);\n }\n return [token, swatch[ref.step]];\n }),\n ) as SurfaceSemanticColors;\n}\n\nexport function generatePalette(\n config: ThemeConfig,\n mode: ThemeColorMode = 'light',\n): {\n colors: ThemeTokens['colors'];\n swatches: GeneratedThemeSwatches;\n semantics: ThemeSemantics;\n colorDiagnostics: SurfaceColorDiagnostics;\n} {\n const modeConfig = mode === 'dark' ? config.dark : config.light;\n const isDark = mode === 'dark';\n\n parseHexColorOrThrow(modeConfig.primaryColor);\n\n const generated = generateThemeModeColors(modeConfig);\n const { swatches } = generated;\n const references = isDark ? DARK_SEMANTIC_COLOR_REFERENCES : LIGHT_SEMANTIC_COLOR_REFERENCES;\n const resolved = resolveSemanticColors(generated, references);\n const { semantics, colorDiagnostics } = resolveSurfaceSemanticModel({\n generated,\n mode,\n references,\n resolved,\n });\n const { border, content, error, info, neutral, success, surface, warning } = semantics;\n\n const colors: ThemeTokens['colors'] = {\n primary: swatches.primary[500],\n secondary: (swatches.secondary ?? swatches.primary)[500],\n accent: (swatches.tertiary ?? swatches.primary)[500],\n highlight: (swatches.quaternary ?? swatches.primary)[500],\n tertiary: (swatches.tertiary ?? swatches.primary)[500],\n quaternary: (swatches.quaternary ?? swatches.primary)[500],\n background: neutral.bg,\n surface: surface.default,\n text: content.default,\n textSecondary: content.muted,\n border: border.default,\n error: error.base,\n success: success.base,\n warning: warning.base,\n info: info.base,\n };\n\n return {\n colors,\n swatches,\n semantics,\n colorDiagnostics,\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createSurfaceColorDiagnosticCollector.d.ts","sourceRoot":"","sources":["../../src/theme/createSurfaceColorDiagnosticCollector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,QAAQ,EACT,MAAM,yBAAyB,CAAC;AAOjC,OAAO,KAAK,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAE1F,0FAA0F;AAC1F,wBAAgB,qCAAqC,oCAEpD;AAED,cAAM,+BAA+B;IACnC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,EAAE,CAAM;IAC5D,QAAQ,CAAC,SAAS,EAAE,yBAAyB,EAAE,CAAM;IAErD,QAAQ,CAAC,iBAAiB,GACxB,IAAI,MAAM,EACV,YAAY,QAAQ,EACpB,YAAY,QAAQ,EACpB,iBAAiB,MAAM,KACtB,QAAQ,CAWT;IAEF,QAAQ,CAAC,cAAc,GACrB,IAAI,MAAM,EACV,YAAY,QAAQ,EACpB,YAAY,QAAQ,EACpB,iBAAiB,MAAM,KACtB,yBAAyB,CAU1B;IAEF,QAAQ,CAAC,WAAW,GAClB,IAAI,MAAM,EACV,QAAQ,WAAW,EACnB,QAAQ,oBAAoB,EAC5B,UAAU,SAAS,oBAAoB,EAAE,EACzC,WAAW,oBAAoB,KAC9B,QAAQ,CAOT;IAEF,QAAQ,CAAC,gBAAgB,GACvB,IAAI,MAAM,EACV,YAAY,QAAQ,EACpB,iBAAiB,MAAM,KACtB,QAAQ,CAWT;CACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createSurfaceColorDiagnosticCollector.js","sourceRoot":"","sources":["../../src/theme/createSurfaceColorDiagnosticCollector.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAIjC,0FAA0F;AAC1F,MAAM,UAAU,qCAAqC;IACnD,OAAO,IAAI,+BAA+B,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,+BAA+B;IAC1B,UAAU,GAAsC,EAAE,CAAC;IACnD,SAAS,GAAgC,EAAE,CAAC;IAE5C,iBAAiB,GAAG,CAC3B,EAAU,EACV,UAAoB,EACpB,UAAoB,EACpB,eAAuB,EACb,EAAE;QACZ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAClB,EAAE;YACF,UAAU;YACV,UAAU;YACV,QAAQ;YACR,eAAe;YACf,MAAM,EAAE,QAAQ,IAAI,eAAe;SACpC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEO,cAAc,GAAG,CACxB,EAAU,EACV,UAAoB,EACpB,UAAoB,EACpB,eAAuB,EACI,EAAE;QAC7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1D,OAAO;YACL,EAAE;YACF,UAAU;YACV,UAAU;YACV,QAAQ;YACR,eAAe;YACf,MAAM,EAAE,QAAQ,IAAI,eAAe;SACpC,CAAC;IACJ,CAAC,CAAC;IAEO,WAAW,GAAG,CACrB,EAAU,EACV,MAAmB,EACnB,MAA4B,EAC5B,QAAyC,EACzC,SAA+B,EACrB,EAAE;QACZ,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,gDAAgD,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC7B,CAAC,CAAC;IAEO,gBAAgB,GAAG,CAC1B,EAAU,EACV,UAAoB,EACpB,eAAuB,EACb,EAAE;QACZ,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAClB,EAAE;YACF,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU;YACV,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,eAAe;YACf,MAAM,EAAE,QAAQ,CAAC,QAAQ,IAAI,eAAe;SAC7C,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC7B,CAAC,CAAC;CACH","sourcesContent":["import type {\n ColorContrastContext,\n ColorSelectionTarget,\n ColorSwatch,\n ColorSwatchTiePolicy,\n HexColor,\n} from '@ankhorage/color-theory';\nimport {\n getContrastRatio,\n getReadableForeground,\n selectColorSwatchStep,\n} from '@ankhorage/color-theory';\n\nimport type { SurfaceColorSelectionDiagnostic, SurfaceContrastDiagnostic } from './types';\n\n/** Collect deterministic Color Theory evidence while Surface resolves semantic colors. */\nexport function createSurfaceColorDiagnosticCollector() {\n return new SurfaceColorDiagnosticCollector();\n}\n\nclass SurfaceColorDiagnosticCollector {\n readonly selections: SurfaceColorSelectionDiagnostic[] = [];\n readonly contrasts: SurfaceContrastDiagnostic[] = [];\n\n readonly measureForeground = (\n id: string,\n foreground: HexColor,\n background: HexColor,\n minimumContrast: number,\n ): HexColor => {\n const contrast = getContrastRatio(foreground, background);\n this.contrasts.push({\n id,\n foreground,\n background,\n contrast,\n minimumContrast,\n passes: contrast >= minimumContrast,\n });\n return foreground;\n };\n\n readonly measureSurface = (\n id: string,\n foreground: HexColor,\n background: HexColor,\n minimumContrast: number,\n ): SurfaceContrastDiagnostic => {\n const contrast = getContrastRatio(foreground, background);\n return {\n id,\n foreground,\n background,\n contrast,\n minimumContrast,\n passes: contrast >= minimumContrast,\n };\n };\n\n readonly selectColor = (\n id: string,\n swatch: ColorSwatch,\n target: ColorSelectionTarget,\n contexts: readonly ColorContrastContext[],\n tiePolicy: ColorSwatchTiePolicy,\n ): HexColor => {\n const result = selectColorSwatchStep(swatch, target, contexts, tiePolicy);\n this.selections.push({ id, result });\n if (!result.selected) {\n throw new Error(`[surface] No '${id}' swatch step satisfies the required contrast.`);\n }\n return result.selected.hex;\n };\n\n readonly selectForeground = (\n id: string,\n background: HexColor,\n minimumContrast: number,\n ): HexColor => {\n const selected = getReadableForeground(background);\n this.contrasts.push({\n id,\n foreground: selected.foreground,\n background,\n contrast: selected.contrast,\n minimumContrast,\n passes: selected.contrast >= minimumContrast,\n });\n return selected.foreground;\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createSurfaceSemanticPolicy.d.ts","sourceRoot":"","sources":["../../src/theme/createSurfaceSemanticPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,QAAQ,EACR,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,KAAK,sBAAsB,GAAG,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAEnE,UAAU,2BAA2B;IACnC,iBAAiB,EAAE,CACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,QAAQ,EACpB,UAAU,EAAE,QAAQ,EACpB,eAAe,EAAE,MAAM,KACpB,QAAQ,CAAC;IACd,cAAc,EAAE,CACd,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,QAAQ,EACpB,UAAU,EAAE,QAAQ,EACpB,eAAe,EAAE,MAAM,KACpB,yBAAyB,CAAC;CAChC;AAED,uFAAuF;AACvF,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,2BAA2B,yBAG1C;AAED,cAAM,qBAAqB;IAMvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAP/B,QAAQ,CAAC,uBAAuB,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClE,QAAQ,CAAC,mBAAmB,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC9D,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;gBAGtB,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,2BAA2B;IAO5D,YAAY,CAAC,aAAa,EAAE,WAAW,GAAG,gBAAgB;IAkB1D,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,gBAAgB;IAajD,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IA4C1E,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,yBAAyB,EAAE;IAQhF,aAAa,IAAI,oBAAoB;IAIrC,UAAU,IAAI,oBAAoB;IAIlC,mBAAmB,IAAI,oBAAoB;IAI3C,UAAU,IAAI,oBAAoB;IAIlC,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,cAAc;CAQvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createSurfaceSemanticPolicy.js","sourceRoot":"","sources":["../../src/theme/createSurfaceSemanticPolicy.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAyB5D,uFAAuF;AACvF,MAAM,UAAU,2BAA2B,CACzC,QAAgC,EAChC,MAAe,EACf,YAAyC;IAEzC,OAAO,IAAI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,qBAAqB;IAMN;IACA;IACA;IAPV,uBAAuB,CAAkC;IACzD,mBAAmB,CAAkC;IACrD,SAAS,CAAuB;IAEzC,YACmB,QAAgC,EAChC,MAAe,EACf,YAAyC;QAFzC,aAAQ,GAAR,QAAQ,CAAwB;QAChC,WAAM,GAAN,MAAM,CAAS;QACf,iBAAY,GAAZ,YAAY,CAA6B;QAE1D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC3F,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACzF,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;IACzD,CAAC;IAED,YAAY,CAAC,aAA0B;QACrC,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC/B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC9B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;YACnE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;YACpE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC5B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;YACnE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC9B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;YAClC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;YACjE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YACpC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;SACzC,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,OAAiB;QAC5B,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC9B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YAChC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;YACnC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YAChC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;YACpC,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YAClC,OAAO;SACR,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,OAAyB,EAAE,OAAyB;QACjE,MAAM,KAAK,GAAG;YACZ;gBACE,4BAA4B;gBAC5B,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,MAAM;gBACd,oBAAoB,CAAC,YAAY;aAClC;YACD;gBACE,yBAAyB;gBACzB,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,OAAO;gBACf,oBAAoB,CAAC,YAAY;aAClC;YACD,CAAC,uBAAuB,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,YAAY,CAAC;YAC5F;gBACE,wBAAwB;gBACxB,OAAO,CAAC,MAAM;gBACd,OAAO,CAAC,OAAO;gBACf,oBAAoB,CAAC,YAAY;aAClC;YACD;gBACE,2BAA2B;gBAC3B,OAAO,CAAC,QAAQ;gBAChB,OAAO,CAAC,QAAQ;gBAChB,oBAAoB,CAAC,gBAAgB;aACtC;YACD;gBACE,yBAAyB;gBACzB,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,OAAO;gBACf,oBAAoB,CAAC,YAAY;aAClC;SACO,CAAC;QACX,KAAK,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,IAAI,KAAK,EAAE,CAAC;YAClE,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACjC,EAAE,EACF,oBAAoB,CAAC,UAAU,CAAC,EAChC,oBAAoB,CAAC,UAAU,CAAC,EAChC,eAAe,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wBAAwB,CAAC,OAAyB;QAChD,OAAO;YACL,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC;YACvD,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC;YACrD,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC,QAAQ,CAAC;SAC1D,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,UAAU;QACR,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC/D,CAAC;IAED,mBAAmB;QACjB,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC;IAED,UAAU;QACR,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IAEO,qBAAqB,CAAC,eAAuB;QACnD,OAAO;YACL,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE;YACxE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE;SACnE,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,EAAU,EAAE,UAAkB;QACnD,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CACrC,EAAE,EACF,oBAAoB,CAAC,UAAU,CAAC,EAChC,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,oBAAoB,CAAC,iBAAiB,CACvC,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type {\n ColorContrastContext,\n ColorSelectionTarget,\n ColorSwatch,\n ColorSwatchTiePolicy,\n HexColor,\n SemanticColorToken,\n} from '@ankhorage/color-theory';\nimport { parseHexColorOrThrow } from '@ankhorage/color-theory';\n\nimport { SURFACE_COLOR_POLICY } from './surfaceColorPolicy';\nimport type {\n ContentSemantics,\n NeutralSemantics,\n SurfaceContrastDiagnostic,\n SurfaceSemantics,\n} from './types';\n\ntype ResolvedSemanticColors = Record<SemanticColorToken, HexColor>;\n\ninterface SurfaceSemanticMeasurements {\n measureForeground: (\n id: string,\n foreground: HexColor,\n background: HexColor,\n minimumContrast: number,\n ) => HexColor;\n measureSurface: (\n id: string,\n foreground: HexColor,\n background: HexColor,\n minimumContrast: number,\n ) => SurfaceContrastDiagnostic;\n}\n\n/** Create the canonical Surface policy for selecting and measuring semantic colors. */\nexport function createSurfaceSemanticPolicy(\n resolved: ResolvedSemanticColors,\n isDark: boolean,\n measurements: SurfaceSemanticMeasurements,\n) {\n return new SurfaceSemanticPolicy(resolved, isDark, measurements);\n}\n\nclass SurfaceSemanticPolicy {\n readonly adjacentSurfaceContexts: readonly ColorContrastContext[];\n readonly textSurfaceContexts: readonly ColorContrastContext[];\n readonly tiePolicy: ColorSwatchTiePolicy;\n\n constructor(\n private readonly resolved: ResolvedSemanticColors,\n private readonly isDark: boolean,\n private readonly measurements: SurfaceSemanticMeasurements,\n ) {\n this.adjacentSurfaceContexts = this.createSurfaceContexts(SURFACE_COLOR_POLICY.uiContrast);\n this.textSurfaceContexts = this.createSurfaceContexts(SURFACE_COLOR_POLICY.textContrast);\n this.tiePolicy = isDark ? 'lower-step' : 'higher-step';\n }\n\n buildNeutral(neutralSwatch: ColorSwatch): NeutralSemantics {\n return {\n bg: this.resolved.background,\n bgSubtle: this.resolved.surface,\n surface: this.resolved.surface,\n surfaceHover: this.isDark ? neutralSwatch[800] : neutralSwatch[200],\n surfaceActive: this.isDark ? neutralSwatch[700] : neutralSwatch[300],\n border: this.resolved.border,\n borderStrong: this.isDark ? neutralSwatch[600] : neutralSwatch[300],\n divider: this.resolved.divider,\n text: this.resolved.text,\n textMuted: this.resolved.textMuted,\n textSubtle: this.isDark ? neutralSwatch[300] : neutralSwatch[600],\n disabledBg: this.resolved.disabledBg,\n disabledText: this.resolved.disabledText,\n };\n }\n\n buildSurface(inverse: HexColor): SurfaceSemantics {\n return {\n default: this.resolved.surface,\n subtle: this.resolved.background,\n raised: this.resolved.surfaceRaised,\n sunken: this.resolved.background,\n overlay: this.resolved.surfaceRaised,\n scrim: '#0000008f',\n disabled: this.resolved.disabledBg,\n inverse,\n };\n }\n\n measureContent(content: ContentSemantics, surface: SurfaceSemantics): void {\n const pairs = [\n [\n 'content.default/background',\n content.default,\n surface.sunken,\n SURFACE_COLOR_POLICY.textContrast,\n ],\n [\n 'content.default/surface',\n content.default,\n surface.default,\n SURFACE_COLOR_POLICY.textContrast,\n ],\n ['content.muted/surface', content.muted, surface.default, SURFACE_COLOR_POLICY.textContrast],\n [\n 'content.subtle/surface',\n content.subtle,\n surface.default,\n SURFACE_COLOR_POLICY.textContrast,\n ],\n [\n 'content.disabled/disabled',\n content.disabled,\n surface.disabled,\n SURFACE_COLOR_POLICY.disabledContrast,\n ],\n [\n 'content.inverse/inverse',\n content.inverse,\n surface.inverse,\n SURFACE_COLOR_POLICY.textContrast,\n ],\n ] as const;\n for (const [id, foreground, background, minimumContrast] of pairs) {\n this.measurements.measureForeground(\n id,\n parseHexColorOrThrow(foreground),\n parseHexColorOrThrow(background),\n minimumContrast,\n );\n }\n }\n\n measureSurfaceSeparation(surface: SurfaceSemantics): SurfaceContrastDiagnostic[] {\n return [\n this.measureSurface('surface.default', surface.default),\n this.measureSurface('surface.raised', surface.raised),\n this.measureSurface('surface.disabled', surface.disabled),\n ];\n }\n\n neutralTarget(): ColorSelectionTarget {\n return { lightness: this.isDark ? 0.65 : 0.55, chroma: 0.02 };\n }\n\n roleTarget(): ColorSelectionTarget {\n return { lightness: this.isDark ? 0.65 : 0.5, chroma: 0.15 };\n }\n\n strongNeutralTarget(): ColorSelectionTarget {\n return { lightness: this.isDark ? 0.8 : 0.4, chroma: 0.02 };\n }\n\n textTarget(): ColorSelectionTarget {\n return { lightness: this.isDark ? 0.75 : 0.45, chroma: 0.15 };\n }\n\n private createSurfaceContexts(minimumContrast: number): readonly ColorContrastContext[] {\n return [\n { id: 'background', against: this.resolved.background, minimumContrast },\n { id: 'surface', against: this.resolved.surface, minimumContrast },\n ];\n }\n\n private measureSurface(id: string, foreground: string): SurfaceContrastDiagnostic {\n return this.measurements.measureSurface(\n id,\n parseHexColorOrThrow(foreground),\n this.resolved.background,\n SURFACE_COLOR_POLICY.surfaceSeparation,\n );\n }\n}\n"]}
@@ -1,5 +0,0 @@
1
- import type { SurfaceTheme, ThemeConfig } from './types';
2
- export { DEFAULT_TOKENS } from './defaultTokens';
3
- export declare const DEFAULT_CONFIG: ThemeConfig;
4
- export declare function createTheme(config?: ThemeConfig, mode?: 'light' | 'dark', activeFontId?: string | null): SurfaceTheme;
5
- //# sourceMappingURL=createTheme.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTheme.d.ts","sourceRoot":"","sources":["../../src/theme/createTheme.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,eAAO,MAAM,cAAc,EAAE,WAK5B,CAAC;AAcF,wBAAgB,WAAW,CACzB,MAAM,GAAE,WAA4B,EACpC,IAAI,GAAE,OAAO,GAAG,MAAgB,EAChC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC3B,YAAY,CAad"}
@@ -1,49 +0,0 @@
1
- import { generatePalette } from './colorEngine';
2
- import { resolveGlobalTokens } from './resolveGlobalTokens';
3
- export { DEFAULT_TOKENS } from './defaultTokens';
4
- export const DEFAULT_CONFIG = {
5
- id: 'default',
6
- name: 'Default',
7
- light: { primaryColor: '#3B82F6', harmony: 'monochromatic' },
8
- dark: { primaryColor: '#3B82F6', harmony: 'monochromatic' },
9
- };
10
- const ACTIVE_FONT_WEIGHTS = [
11
- '100',
12
- '200',
13
- '300',
14
- '400',
15
- '500',
16
- '600',
17
- '700',
18
- '800',
19
- '900',
20
- ];
21
- export function createTheme(config = DEFAULT_CONFIG, mode = 'light', activeFontId) {
22
- const { colors, swatches, semantics, colorDiagnostics } = generatePalette(config, mode);
23
- const theme = {
24
- ...resolveGlobalTokens(config.tokens),
25
- colors,
26
- swatches,
27
- semantics,
28
- colorDiagnostics,
29
- config,
30
- };
31
- applyActiveFont(theme, activeFontId);
32
- return theme;
33
- }
34
- function applyActiveFont(theme, activeFontId) {
35
- if (!activeFontId)
36
- return;
37
- const familyName = toPascalCase(activeFontId);
38
- for (const weight of ACTIVE_FONT_WEIGHTS) {
39
- theme.typography.fonts.normal[weight] = `${familyName}_${weight}Regular`;
40
- theme.typography.fonts.italic[weight] = `${familyName}_${weight}Italic`;
41
- }
42
- }
43
- function toPascalCase(value) {
44
- return value
45
- .split(/[- ]+/)
46
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
47
- .join('');
48
- }
49
- //# sourceMappingURL=createTheme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTheme.js","sourceRoot":"","sources":["../../src/theme/createTheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE;IAC5D,IAAI,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE;CAC5D,CAAC;AAEF,MAAM,mBAAmB,GAA0B;IACjD,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC;AAEF,MAAM,UAAU,WAAW,CACzB,SAAsB,cAAc,EACpC,OAAyB,OAAO,EAChC,YAA4B;IAE5B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxF,MAAM,KAAK,GAAiB;QAC1B,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC;QACrC,MAAM;QACN,QAAQ;QACR,SAAS;QACT,gBAAgB;QAChB,MAAM;KACP,CAAC;IAEF,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB,EAAE,YAAuC;IACnF,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC9C,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACzC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,UAAU,IAAI,MAAM,SAAS,CAAC;QACzE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,UAAU,IAAI,MAAM,QAAQ,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC","sourcesContent":["import { generatePalette } from './colorEngine';\nimport { resolveGlobalTokens } from './resolveGlobalTokens';\nimport type { FontWeight, SurfaceTheme, ThemeConfig } from './types';\n\nexport { DEFAULT_TOKENS } from './defaultTokens';\n\nexport const DEFAULT_CONFIG: ThemeConfig = {\n id: 'default',\n name: 'Default',\n light: { primaryColor: '#3B82F6', harmony: 'monochromatic' },\n dark: { primaryColor: '#3B82F6', harmony: 'monochromatic' },\n};\n\nconst ACTIVE_FONT_WEIGHTS: readonly FontWeight[] = [\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n];\n\nexport function createTheme(\n config: ThemeConfig = DEFAULT_CONFIG,\n mode: 'light' | 'dark' = 'light',\n activeFontId?: string | null,\n): SurfaceTheme {\n const { colors, swatches, semantics, colorDiagnostics } = generatePalette(config, mode);\n const theme: SurfaceTheme = {\n ...resolveGlobalTokens(config.tokens),\n colors,\n swatches,\n semantics,\n colorDiagnostics,\n config,\n };\n\n applyActiveFont(theme, activeFontId);\n return theme;\n}\n\nfunction applyActiveFont(theme: SurfaceTheme, activeFontId: string | null | undefined): void {\n if (!activeFontId) return;\n\n const familyName = toPascalCase(activeFontId);\n for (const weight of ACTIVE_FONT_WEIGHTS) {\n theme.typography.fonts.normal[weight] = `${familyName}_${weight}Regular`;\n theme.typography.fonts.italic[weight] = `${familyName}_${weight}Italic`;\n }\n}\n\nfunction toPascalCase(value: string): string {\n return value\n .split(/[- ]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n}\n"]}
@@ -1,3 +0,0 @@
1
- import type { ThemeTokens } from './types';
2
- export declare const DEFAULT_TOKENS: Omit<ThemeTokens, 'colors' | 'swatches' | 'semantics' | 'colorDiagnostics'>;
3
- //# sourceMappingURL=defaultTokens.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaultTokens.d.ts","sourceRoot":"","sources":["../../src/theme/defaultTokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,SAAS,CAAC;AAgBvD,eAAO,MAAM,cAAc,EAAE,IAAI,CAC/B,WAAW,EACX,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,kBAAkB,CA0CzD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaultTokens.js","sourceRoot":"","sources":["../../src/theme/defaultTokens.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAA2C;IAC7D,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAGvB;IACF,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;IAChE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACjD,UAAU,EAAE;QACV,QAAQ,EAAE;YACR,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC/C,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC/C,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC/C,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;YACnD,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;YACnD,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SACpD;QACD,KAAK,EAAE;YACL,EAAE,EAAE,EAAE;YACN,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,EAAE,EAAE,EAAE;YACN,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,EAAE;YACT,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;SACP;QACD,OAAO,EAAE;YACP,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE,EAAE;KACxE;IACD,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;CACzC,CAAC","sourcesContent":["import type { FontWeight, ThemeTokens } from './types';\n\nconst EMPTY_FONT_MAP: Record<FontWeight, string | undefined> = {\n '100': undefined,\n '200': undefined,\n '300': undefined,\n '400': undefined,\n '500': undefined,\n '600': undefined,\n '700': undefined,\n '800': undefined,\n '900': undefined,\n bold: undefined,\n normal: undefined,\n};\n\nexport const DEFAULT_TOKENS: Omit<\n ThemeTokens,\n 'colors' | 'swatches' | 'semantics' | 'colorDiagnostics'\n> = {\n spacing: { none: 0, xs: 4, s: 8, m: 16, l: 24, xl: 32, xxl: 48 },\n radii: { none: 0, s: 4, m: 8, l: 16, full: 9999 },\n typography: {\n headings: {\n 1: { size: 32, lineHeight: 40, weight: 'bold' },\n 2: { size: 24, lineHeight: 32, weight: 'bold' },\n 3: { size: 20, lineHeight: 28, weight: 'bold' },\n 4: { size: 18, lineHeight: 24, weight: 'semiBold' },\n 5: { size: 16, lineHeight: 22, weight: 'semiBold' },\n 6: { size: 14, lineHeight: 20, weight: 'semiBold' },\n },\n sizes: {\n xs: 12,\n s: 14,\n m: 16,\n l: 18,\n xl: 20,\n xxl: 24,\n '3xl': 30,\n h1: 32,\n h2: 24,\n h3: 20,\n h4: 18,\n h5: 16,\n h6: 14,\n },\n weights: {\n thin: '100',\n extraLight: '200',\n light: '300',\n regular: '400',\n medium: '500',\n semiBold: '600',\n bold: '700',\n extraBold: '800',\n black: '900',\n },\n fonts: { normal: { ...EMPTY_FONT_MAP }, italic: { ...EMPTY_FONT_MAP } },\n },\n shadows: { soft: 2, medium: 4, hard: 8 },\n};\n"]}
@@ -1,3 +0,0 @@
1
- export * from './public';
2
- export * from './ThemeContext';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}