@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSurfaceSemanticPolicy.d.ts","sourceRoot":"","sources":["../../../../src/features/theme/domain/createSurfaceSemanticPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,QAAQ,EACR,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAG9B,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,5 +1,5 @@
1
1
  import { parseHexColorOrThrow } from '@ankhorage/color-theory';
2
- import { SURFACE_COLOR_POLICY } from './surfaceColorPolicy';
2
+ import { SURFACE_COLOR_POLICY } from '../constants';
3
3
  /** Create the canonical Surface policy for selecting and measuring semantic colors. */
4
4
  export function createSurfaceSemanticPolicy(resolved, isDark, measurements) {
5
5
  return new SurfaceSemanticPolicy(resolved, isDark, measurements);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSurfaceSemanticPolicy.js","sourceRoot":"","sources":["../../../../src/features/theme/domain/createSurfaceSemanticPolicy.ts"],"names":[],"mappings":"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","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 type {\n ContentSemantics,\n NeutralSemantics,\n SurfaceContrastDiagnostic,\n SurfaceSemantics,\n} from '../../../types/theme';\nimport { SURFACE_COLOR_POLICY } from '../constants';\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"]}
@@ -0,0 +1,10 @@
1
+ import type { GeneratedThemeSwatches, ThemeColorMode } from '@ankhorage/color-theory';
2
+ import type { ThemeConfig } from '@ankhorage/contracts';
3
+ import type { SurfaceColorDiagnostics, ThemeSemantics, ThemeTokens } from '../../../types/theme';
4
+ export declare function generatePalette(config: ThemeConfig, mode?: ThemeColorMode): {
5
+ colors: ThemeTokens['colors'];
6
+ swatches: GeneratedThemeSwatches;
7
+ semantics: ThemeSemantics;
8
+ colorDiagnostics: SurfaceColorDiagnostics;
9
+ };
10
+ //# sourceMappingURL=generatePalette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePalette.d.ts","sourceRoot":"","sources":["../../../../src/features/theme/domain/generatePalette.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAOtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIjG,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,14 +1,6 @@
1
1
  import { DARK_SEMANTIC_COLOR_REFERENCES, generateThemeModeColors, LIGHT_SEMANTIC_COLOR_REFERENCES, parseHexColorOrThrow, } from '@ankhorage/color-theory';
2
+ import { resolveSemanticColors } from './resolveSemanticColors';
2
3
  import { resolveSurfaceSemanticModel } from './resolveSurfaceSemanticModel';
3
- export function resolveSemanticColors(generated, references) {
4
- return Object.fromEntries(Object.entries(references).map(([token, ref]) => {
5
- const swatch = generated.swatches[ref.role];
6
- if (!swatch) {
7
- throw new Error(`Missing swatch for role '${ref.role}' (token: '${token}')`);
8
- }
9
- return [token, swatch[ref.step]];
10
- }));
11
- }
12
4
  export function generatePalette(config, mode = 'light') {
13
5
  const modeConfig = mode === 'dark' ? config.dark : config.light;
14
6
  const isDark = mode === 'dark';
@@ -48,4 +40,4 @@ export function generatePalette(config, mode = 'light') {
48
40
  colorDiagnostics,
49
41
  };
50
42
  }
51
- //# sourceMappingURL=colorEngine.js.map
43
+ //# sourceMappingURL=generatePalette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePalette.js","sourceRoot":"","sources":["../../../../src/features/theme/domain/generatePalette.ts"],"names":[],"mappings":"AACA,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,OAAuB,OAAO;IAO9B,MAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IAE/B,oBAAoB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAE9C,MAAM,SAAS,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,+BAA+B,CAAC;IAC7F,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,2BAA2B,CAAC;QAClE,SAAS;QACT,IAAI;QACJ,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IAEvF,MAAM,MAAM,GAA0B;QACpC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;QAC9B,SAAS,EAAE,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;QACxD,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;QACpD,SAAS,EAAE,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;QACzD,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;QACtD,UAAU,EAAE,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;QAC1D,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,aAAa,EAAE,OAAO,CAAC,KAAK;QAC5B,MAAM,EAAE,MAAM,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IAEF,OAAO;QACL,MAAM;QACN,QAAQ;QACR,SAAS;QACT,gBAAgB;KACjB,CAAC;AACJ,CAAC","sourcesContent":["import type { GeneratedThemeSwatches, ThemeColorMode } 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 type { SurfaceColorDiagnostics, ThemeSemantics, ThemeTokens } from '../../../types/theme';\nimport { resolveSemanticColors } from './resolveSemanticColors';\nimport { resolveSurfaceSemanticModel } from './resolveSurfaceSemanticModel';\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,5 +1,5 @@
1
1
  import type { ColorSwatch, HexColor } from '@ankhorage/color-theory';
2
- import type { RoleSemantics } from './types';
2
+ import type { RoleSemantics } from '../../../types/theme';
3
3
  interface ResolveRoleSemanticsInput {
4
4
  base?: HexColor;
5
5
  disabledBg: HexColor;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveRoleSemantics.d.ts","sourceRoot":"","sources":["../../../../src/features/theme/domain/resolveRoleSemantics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,UAAU,yBAAyB;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,UAAU,EAAE,QAAQ,CAAC;IACrB,YAAY,EAAE,QAAQ,CAAC;IACvB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,EAAE,CACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,QAAQ,EACpB,UAAU,EAAE,QAAQ,EACpB,eAAe,EAAE,MAAM,KACpB,QAAQ,CAAC;IACd,aAAa,EAAE,QAAQ,CAAC;IACxB,OAAO,EAAE,QAAQ,CAAC;IAClB,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,KAAK,QAAQ,CAAC;IAC1F,MAAM,EAAE,WAAW,CAAC;CACrB;AAWD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,KAAK,EACL,EAAE,EACF,MAAM,EACN,iBAAiB,EACjB,aAAa,EACb,OAAO,EACP,gBAAgB,EAChB,MAAM,GACP,EAAE,yBAAyB,GAAG,aAAa,CAiC3C"}
@@ -1,4 +1,4 @@
1
- import { SURFACE_COLOR_POLICY } from './surfaceColorPolicy';
1
+ import { SURFACE_COLOR_POLICY } from '../constants';
2
2
  /** Resolve every filled role state together with its measured foreground. */
3
3
  export function resolveRoleSemantics({ base, disabledBg, disabledText, hover, id, isDark, measureForeground, onSurfaceText, outline, selectForeground, swatch, }) {
4
4
  const states = resolveRoleStateColors(swatch, isDark, base, hover);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveRoleSemantics.js","sourceRoot":"","sources":["../../../../src/features/theme/domain/resolveRoleSemantics.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AA8BpD,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAAC,EACnC,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,KAAK,EACL,EAAE,EACF,MAAM,EACN,iBAAiB,EACjB,aAAa,EACb,OAAO,EACP,gBAAgB,EAChB,MAAM,GACoB;IAC1B,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAEnE,OAAO;QACL,GAAG,MAAM;QACT,OAAO;QACP,aAAa;QACb,WAAW,EAAE,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC,YAAY,CAAC;QAC3F,WAAW,EAAE,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,oBAAoB,CAAC,YAAY,CAAC;QAC7F,YAAY,EAAE,gBAAgB,CAC5B,GAAG,EAAE,SAAS,EACd,MAAM,CAAC,MAAM,EACb,oBAAoB,CAAC,YAAY,CAClC;QACD,UAAU,EAAE,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,YAAY,CAAC;QAC5F,eAAe,EAAE,gBAAgB,CAC/B,GAAG,EAAE,YAAY,EACjB,MAAM,CAAC,SAAS,EAChB,oBAAoB,CAAC,YAAY,CAClC;QACD,gBAAgB,EAAE,gBAAgB,CAChC,GAAG,EAAE,aAAa,EAClB,MAAM,CAAC,UAAU,EACjB,oBAAoB,CAAC,YAAY,CAClC;QACD,UAAU;QACV,cAAc,EAAE,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,YAAY,EACZ,UAAU,EACV,oBAAoB,CAAC,gBAAgB,CACtC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAmB,EACnB,MAAe,EACf,IAAe,EACf,KAAgB;IAEhB,OAAO;QACL,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC1C,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7C,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;KAC/C,CAAC;AACJ,CAAC","sourcesContent":["import type { ColorSwatch, HexColor } from '@ankhorage/color-theory';\n\nimport type { RoleSemantics } from '../../../types/theme';\nimport { SURFACE_COLOR_POLICY } from '../constants';\n\ninterface ResolveRoleSemanticsInput {\n base?: HexColor;\n disabledBg: HexColor;\n disabledText: HexColor;\n hover?: HexColor;\n id: string;\n isDark: boolean;\n measureForeground: (\n id: string,\n foreground: HexColor,\n background: HexColor,\n minimumContrast: number,\n ) => HexColor;\n onSurfaceText: HexColor;\n outline: HexColor;\n selectForeground: (id: string, background: HexColor, minimumContrast: number) => HexColor;\n swatch: ColorSwatch;\n}\n\ninterface RoleStateColors {\n base: HexColor;\n hover: HexColor;\n softActive: HexColor;\n softBg: HexColor;\n softHover: HexColor;\n strong: HexColor;\n}\n\n/** Resolve every filled role state together with its measured foreground. */\nexport function resolveRoleSemantics({\n base,\n disabledBg,\n disabledText,\n hover,\n id,\n isDark,\n measureForeground,\n onSurfaceText,\n outline,\n selectForeground,\n swatch,\n}: ResolveRoleSemanticsInput): RoleSemantics {\n const states = resolveRoleStateColors(swatch, isDark, base, hover);\n\n return {\n ...states,\n outline,\n onSurfaceText,\n onSolidText: selectForeground(`${id}.base`, states.base, SURFACE_COLOR_POLICY.textContrast),\n onHoverText: selectForeground(`${id}.hover`, states.hover, SURFACE_COLOR_POLICY.textContrast),\n onStrongText: selectForeground(\n `${id}.strong`,\n states.strong,\n SURFACE_COLOR_POLICY.textContrast,\n ),\n onSoftText: selectForeground(`${id}.soft`, states.softBg, SURFACE_COLOR_POLICY.textContrast),\n onSoftHoverText: selectForeground(\n `${id}.softHover`,\n states.softHover,\n SURFACE_COLOR_POLICY.textContrast,\n ),\n onSoftActiveText: selectForeground(\n `${id}.softActive`,\n states.softActive,\n SURFACE_COLOR_POLICY.textContrast,\n ),\n disabledBg,\n onDisabledText: measureForeground(\n `${id}.disabled`,\n disabledText,\n disabledBg,\n SURFACE_COLOR_POLICY.disabledContrast,\n ),\n };\n}\n\nfunction resolveRoleStateColors(\n swatch: ColorSwatch,\n isDark: boolean,\n base?: HexColor,\n hover?: HexColor,\n): RoleStateColors {\n return {\n base: base ?? swatch[500],\n hover: hover ?? (isDark ? swatch[400] : swatch[600]),\n strong: isDark ? swatch[300] : swatch[700],\n softBg: isDark ? swatch[900] : swatch[100],\n softHover: isDark ? swatch[800] : swatch[200],\n softActive: isDark ? swatch[700] : swatch[300],\n };\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { GeneratedThemeModeColors, HexColor, SemanticColorReferenceMap, SemanticColorToken } from '@ankhorage/color-theory';
2
+ export type SurfaceSemanticColors = Record<SemanticColorToken, HexColor>;
3
+ export declare function resolveSemanticColors(generated: GeneratedThemeModeColors, references: SemanticColorReferenceMap): SurfaceSemanticColors;
4
+ //# sourceMappingURL=resolveSemanticColors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSemanticColors.d.ts","sourceRoot":"","sources":["../../../../src/features/theme/domain/resolveSemanticColors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAEjC,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"}
@@ -0,0 +1,10 @@
1
+ export function resolveSemanticColors(generated, references) {
2
+ return Object.fromEntries(Object.entries(references).map(([token, ref]) => {
3
+ const swatch = generated.swatches[ref.role];
4
+ if (!swatch) {
5
+ throw new Error(`Missing swatch for role '${ref.role}' (token: '${token}')`);
6
+ }
7
+ return [token, swatch[ref.step]];
8
+ }));
9
+ }
10
+ //# sourceMappingURL=resolveSemanticColors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSemanticColors.js","sourceRoot":"","sources":["../../../../src/features/theme/domain/resolveSemanticColors.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,qBAAqB,CACnC,SAAmC,EACnC,UAAqC;IAErC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,IAAI,cAAc,KAAK,IAAI,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CACsB,CAAC;AAC7B,CAAC","sourcesContent":["import type {\n GeneratedThemeModeColors,\n HexColor,\n SemanticColorReferenceMap,\n SemanticColorToken,\n} from '@ankhorage/color-theory';\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"]}
@@ -1,5 +1,5 @@
1
1
  import type { GeneratedThemeModeColors, HexColor, SemanticColorReferenceMap, SemanticColorToken, ThemeColorMode } from '@ankhorage/color-theory';
2
- import type { SurfaceColorDiagnostics, ThemeSemantics } from './types';
2
+ import type { SurfaceColorDiagnostics, ThemeSemantics } from '../../../types/theme';
3
3
  type ResolvedSemanticColors = Record<SemanticColorToken, HexColor>;
4
4
  interface ResolveSurfaceSemanticModelInput {
5
5
  generated: GeneratedThemeModeColors;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSurfaceSemanticModel.d.ts","sourceRoot":"","sources":["../../../../src/features/theme/domain/resolveSurfaceSemanticModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,wBAAwB,EAExB,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAIV,uBAAuB,EACvB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAK9B,KAAK,sBAAsB,GAAG,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAkBnE,UAAU,gCAAgC;IACxC,SAAS,EAAE,wBAAwB,CAAC;IACpC,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,yBAAyB,CAAC;IACtC,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,4FAA4F;AAC5F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,gCAAgC,GAAG;IACpF,SAAS,EAAE,cAAc,CAAC;IAC1B,gBAAgB,EAAE,uBAAuB,CAAC;CAC3C,CA2CA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSurfaceSemanticModel.js","sourceRoot":"","sources":["../../../../src/features/theme/domain/resolveSurfaceSemanticModel.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ColorSelectionTarget,\n ColorSwatch,\n GeneratedThemeModeColors,\n GeneratedThemeSwatches,\n HexColor,\n SemanticColorReferenceMap,\n SemanticColorToken,\n ThemeColorMode,\n} from '@ankhorage/color-theory';\nimport { createDefaultSemanticStatusSwatches } from '@ankhorage/color-theory';\n\nimport type {\n BorderSemantics,\n ContentSemantics,\n RoleSemantics,\n SurfaceColorDiagnostics,\n ThemeSemantics,\n} from '../../../types/theme';\nimport { createSurfaceColorDiagnosticCollector } from './createSurfaceColorDiagnosticCollector';\nimport { createSurfaceSemanticPolicy } from './createSurfaceSemanticPolicy';\nimport { resolveRoleSemantics } from './resolveRoleSemantics';\n\ntype ResolvedSemanticColors = Record<SemanticColorToken, HexColor>;\n\ninterface SemanticResolutionContext {\n collector: ReturnType<typeof createSurfaceColorDiagnosticCollector>;\n generated: GeneratedThemeModeColors;\n isDark: boolean;\n mode: ThemeColorMode;\n neutralSwatch: ColorSwatch;\n policy: ReturnType<typeof createSurfaceSemanticPolicy>;\n quaternarySwatch: ColorSwatch;\n references: SemanticColorReferenceMap;\n resolved: ResolvedSemanticColors;\n secondarySwatch: ColorSwatch;\n statusSwatches: ReturnType<typeof createDefaultSemanticStatusSwatches>;\n swatches: GeneratedThemeSwatches;\n tertiarySwatch: ColorSwatch;\n}\n\ninterface ResolveSurfaceSemanticModelInput {\n generated: GeneratedThemeModeColors;\n mode: ThemeColorMode;\n references: SemanticColorReferenceMap;\n resolved: ResolvedSemanticColors;\n}\n\n/** Resolve the complete Surface-owned semantic model from canonical Color Theory output. */\nexport function resolveSurfaceSemanticModel(input: ResolveSurfaceSemanticModelInput): {\n semantics: ThemeSemantics;\n colorDiagnostics: SurfaceColorDiagnostics;\n} {\n const context = createResolutionContext(input);\n const roles = resolveSemanticRoles(context);\n const inverseSurface = context.isDark ? context.neutralSwatch[50] : context.neutralSwatch[900];\n const inverseContent = context.isDark ? context.neutralSwatch[900] : context.neutralSwatch[50];\n const neutral = context.policy.buildNeutral(context.neutralSwatch);\n const surface = context.policy.buildSurface(inverseSurface);\n const content = resolveContentSemantics(context, neutral.textSubtle, inverseContent);\n const border = resolveBorderSemantics(context, roles.brand.outline);\n context.policy.measureContent(content, surface);\n\n return {\n semantics: {\n neutral,\n brand: roles.brand,\n secondary: roles.secondary,\n accent: roles.accent,\n highlight: roles.highlight,\n danger: roles.danger,\n success: roles.success,\n warning: roles.warning,\n error: roles.danger,\n info: roles.info,\n surface,\n content,\n border,\n selection: {\n background: roles.brand.softBg,\n content: roles.brand.onSoftText,\n border: border.focus,\n },\n action: { primary: roles.brand, neutral: roles.neutralAction, danger: roles.danger },\n },\n colorDiagnostics: {\n mode: context.mode,\n generated: context.generated,\n semanticReferences: context.references,\n statusSwatches: context.statusSwatches.diagnostics,\n selections: context.collector.selections,\n contrasts: context.collector.contrasts,\n surfaceSeparation: context.policy.measureSurfaceSeparation(surface),\n },\n };\n}\n\nfunction createResolutionContext(\n input: ResolveSurfaceSemanticModelInput,\n): SemanticResolutionContext {\n const { generated, mode, references, resolved } = input;\n const { swatches } = generated;\n const collector = createSurfaceColorDiagnosticCollector();\n const isDark = mode === 'dark';\n return {\n collector,\n generated,\n isDark,\n mode,\n neutralSwatch: swatches.neutral,\n policy: createSurfaceSemanticPolicy(resolved, isDark, collector),\n quaternarySwatch: swatches.quaternary ?? swatches.primary,\n references,\n resolved,\n secondarySwatch: swatches.secondary ?? swatches.primary,\n statusSwatches: createDefaultSemanticStatusSwatches(),\n swatches,\n tertiarySwatch: swatches.tertiary ?? swatches.primary,\n };\n}\n\nfunction resolveBorderSemantics(\n context: SemanticResolutionContext,\n focus: string,\n): BorderSemantics {\n const { collector, neutralSwatch, policy, resolved } = context;\n return {\n default: collector.selectColor(\n 'border.default',\n neutralSwatch,\n policy.neutralTarget(),\n policy.adjacentSurfaceContexts,\n policy.tiePolicy,\n ),\n subtle: resolved.border,\n strong: collector.selectColor(\n 'border.strong',\n neutralSwatch,\n policy.strongNeutralTarget(),\n policy.adjacentSurfaceContexts,\n policy.tiePolicy,\n ),\n divider: resolved.divider,\n focus,\n };\n}\n\nfunction resolveContentSemantics(\n context: SemanticResolutionContext,\n subtle: string,\n inverse: string,\n): ContentSemantics {\n const { collector, policy, resolved, secondarySwatch, swatches } = context;\n return {\n default: resolved.text,\n muted: resolved.textMuted,\n subtle,\n disabled: resolved.disabledText,\n icon: resolved.text,\n link: collector.selectColor(\n 'content.link',\n swatches.primary,\n policy.textTarget(),\n policy.textSurfaceContexts,\n policy.tiePolicy,\n ),\n visited: collector.selectColor(\n 'content.visited',\n secondarySwatch,\n policy.textTarget(),\n policy.textSurfaceContexts,\n policy.tiePolicy,\n ),\n inverse,\n };\n}\n\nfunction resolveRole(\n context: SemanticResolutionContext,\n id: string,\n swatch: ColorSwatch,\n options: { base?: HexColor; hover?: HexColor; target?: ColorSelectionTarget } = {},\n): RoleSemantics {\n const { collector, isDark, policy, resolved } = context;\n return resolveRoleSemantics({\n base: options.base,\n disabledBg: resolved.disabledBg,\n disabledText: resolved.disabledText,\n hover: options.hover,\n id,\n isDark,\n measureForeground: collector.measureForeground,\n onSurfaceText: collector.selectColor(\n `${id}.content`,\n swatch,\n policy.textTarget(),\n policy.textSurfaceContexts,\n policy.tiePolicy,\n ),\n outline: collector.selectColor(\n `${id}.outline`,\n swatch,\n options.target ?? policy.roleTarget(),\n policy.adjacentSurfaceContexts,\n policy.tiePolicy,\n ),\n selectForeground: collector.selectForeground,\n swatch,\n });\n}\n\nfunction resolveSemanticRoles(context: SemanticResolutionContext) {\n const { neutralSwatch, resolved, secondarySwatch, statusSwatches, swatches } = context;\n return {\n brand: resolveRole(context, 'brand', swatches.primary, {\n base: resolved.action,\n hover: resolved.actionEmphasis,\n }),\n secondary: resolveRole(context, 'secondary', secondarySwatch),\n accent: resolveRole(context, 'accent', context.tertiarySwatch),\n highlight: resolveRole(context, 'highlight', context.quaternarySwatch),\n danger: resolveRole(context, 'danger', statusSwatches.swatches.danger),\n success: resolveRole(context, 'success', statusSwatches.swatches.success),\n warning: resolveRole(context, 'warning', statusSwatches.swatches.warning),\n info: resolveRole(context, 'info', statusSwatches.swatches.info),\n neutralAction: resolveRole(context, 'neutral', neutralSwatch, {\n target: context.policy.neutralTarget(),\n }),\n };\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export type { ActionSemantics, BorderSemantics, ContentSemantics, FontWeight, NeutralSemantics, RoleSemantics, SelectionSemantics, SurfaceColorDiagnostics, SurfaceColorSelectionDiagnostic, SurfaceContrastDiagnostic, SurfaceSemantics, SurfaceTheme, ThemeMode, ThemeSemantics, ThemeTokens, } from '../../types/theme';
2
+ export { createTheme } from './application/use-cases/createTheme';
3
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/features/theme/public.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,+BAA+B,EAC/B,yBAAyB,EACzB,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createTheme } from './application/use-cases/createTheme';
2
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/features/theme/public.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC","sourcesContent":["export type {\n ActionSemantics,\n BorderSemantics,\n ContentSemantics,\n FontWeight,\n NeutralSemantics,\n RoleSemantics,\n SelectionSemantics,\n SurfaceColorDiagnostics,\n SurfaceColorSelectionDiagnostic,\n SurfaceContrastDiagnostic,\n SurfaceSemantics,\n SurfaceTheme,\n ThemeMode,\n ThemeSemantics,\n ThemeTokens,\n} from '../../types/theme';\nexport { createTheme } from './application/use-cases/createTheme';\n"]}
@@ -0,0 +1,5 @@
1
+ export type { ThemeProviderProps, ThemeRuntime, ThemeScopeProps } from '../../types/theme';
2
+ export { ThemeProvider } from './adapters/inbound/ThemeProvider';
3
+ export { ThemeScope } from './adapters/inbound/ThemeScope';
4
+ export { useTheme } from './adapters/inbound/useTheme';
5
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/features/theme/runtime.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { ThemeProvider } from './adapters/inbound/ThemeProvider';
2
+ export { ThemeScope } from './adapters/inbound/ThemeScope';
3
+ export { useTheme } from './adapters/inbound/useTheme';
4
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/features/theme/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["export type { ThemeProviderProps, ThemeRuntime, ThemeScopeProps } from '../../types/theme';\nexport { ThemeProvider } from './adapters/inbound/ThemeProvider';\nexport { ThemeScope } from './adapters/inbound/ThemeScope';\nexport { useTheme } from './adapters/inbound/useTheme';\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { ThemeGlobalTokenOverrides } from '@ankhorage/contracts';
2
- import type { ThemeTokens } from './types';
2
+ import type { ThemeTokens } from '../../../types/theme';
3
3
  type GlobalThemeTokens = Omit<ThemeTokens, 'colors' | 'swatches' | 'semantics' | 'colorDiagnostics'>;
4
4
  export declare function resolveGlobalTokens(overrides?: ThemeGlobalTokenOverrides): GlobalThemeTokens;
5
5
  export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveGlobalTokens.d.ts","sourceRoot":"","sources":["../../../../src/features/theme/utils/resolveGlobalTokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMxD,KAAK,iBAAiB,GAAG,IAAI,CAC3B,WAAW,EACX,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,kBAAkB,CACzD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,yBAAyB,GAAG,iBAAiB,CAmC5F"}
@@ -1,4 +1,4 @@
1
- import { DEFAULT_TOKENS } from './defaultTokens';
1
+ import { DEFAULT_TOKENS } from '../constants';
2
2
  import { resolveHeadingTokenOverrides } from './resolveHeadingTokenOverrides';
3
3
  import { resolveNumericTokenOverrides } from './resolveNumericTokenOverrides';
4
4
  import { resolveWeightTokenOverrides } from './resolveWeightTokenOverrides';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveGlobalTokens.js","sourceRoot":"","sources":["../../../../src/features/theme/utils/resolveGlobalTokens.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAO5E,MAAM,UAAU,mBAAmB,CAAC,SAAqC;IACvE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAC;IACzC,OAAO;QACL,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,4BAA4B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;SAC/D;QACD,KAAK,EAAE;YACL,GAAG,cAAc,CAAC,KAAK;YACvB,GAAG,4BAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;SAC3D;QACD,UAAU,EAAE;YACV,QAAQ,EAAE,4BAA4B,CACpC,cAAc,CAAC,UAAU,CAAC,QAAQ,EAClC,UAAU,EAAE,QAAQ,CACrB;YACD,KAAK,EAAE;gBACL,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK;gBAClC,GAAG,4BAA4B,CAAC,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC;aAC7E;YACD,OAAO,EAAE;gBACP,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO;gBACpC,GAAG,2BAA2B,CAAC,UAAU,EAAE,OAAO,CAAC;aACpD;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;gBACrD,MAAM,EAAE,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE;aACtD;SACF;QACD,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,4BAA4B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;SAC/D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAgD;IAC1E,IAAI,SAAS,EAAE,OAAO,EAAE,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,SAAS,EAAE,KAAK,EAAE,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC","sourcesContent":["import type { ThemeGlobalTokenOverrides } from '@ankhorage/contracts';\n\nimport type { ThemeTokens } from '../../../types/theme';\nimport { DEFAULT_TOKENS } from '../constants';\nimport { resolveHeadingTokenOverrides } from './resolveHeadingTokenOverrides';\nimport { resolveNumericTokenOverrides } from './resolveNumericTokenOverrides';\nimport { resolveWeightTokenOverrides } from './resolveWeightTokenOverrides';\n\ntype GlobalThemeTokens = Omit<\n ThemeTokens,\n 'colors' | 'swatches' | 'semantics' | 'colorDiagnostics'\n>;\n\nexport function resolveGlobalTokens(overrides?: ThemeGlobalTokenOverrides): GlobalThemeTokens {\n validateZeroTokens(overrides);\n const typography = overrides?.typography;\n return {\n spacing: {\n ...DEFAULT_TOKENS.spacing,\n ...resolveNumericTokenOverrides('spacing', overrides?.spacing),\n },\n radii: {\n ...DEFAULT_TOKENS.radii,\n ...resolveNumericTokenOverrides('radii', overrides?.radii),\n },\n typography: {\n headings: resolveHeadingTokenOverrides(\n DEFAULT_TOKENS.typography.headings,\n typography?.headings,\n ),\n sizes: {\n ...DEFAULT_TOKENS.typography.sizes,\n ...resolveNumericTokenOverrides('typography.sizes', typography?.sizes, true),\n },\n weights: {\n ...DEFAULT_TOKENS.typography.weights,\n ...resolveWeightTokenOverrides(typography?.weights),\n },\n fonts: {\n normal: { ...DEFAULT_TOKENS.typography.fonts.normal },\n italic: { ...DEFAULT_TOKENS.typography.fonts.italic },\n },\n },\n shadows: {\n ...DEFAULT_TOKENS.shadows,\n ...resolveNumericTokenOverrides('shadows', overrides?.shadows),\n },\n };\n}\n\nfunction validateZeroTokens(overrides: ThemeGlobalTokenOverrides | undefined): void {\n if (overrides?.spacing?.none !== undefined && overrides.spacing.none !== 0) {\n throw new RangeError('Theme token spacing.none must remain 0.');\n }\n if (overrides?.radii?.none !== undefined && overrides.radii.none !== 0) {\n throw new RangeError('Theme token radii.none must remain 0.');\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { ThemeTypographyHeadingOverrides } from '@ankhorage/contracts';
2
- import type { ThemeTokens } from './types';
2
+ import type { ThemeTokens } from '../../../types/theme';
3
3
  type HeadingTokens = ThemeTokens['typography']['headings'];
4
4
  export declare function resolveHeadingTokenOverrides(defaults: HeadingTokens, overrides: Readonly<Record<string, ThemeTypographyHeadingOverrides>> | undefined): HeadingTokens;
5
5
  export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveHeadingTokenOverrides.d.ts","sourceRoot":"","sources":["../../../../src/features/theme/utils/resolveHeadingTokenOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,KAAK,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;AAO3D,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC,GAAG,SAAS,GAC/E,aAAa,CAUf"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveHeadingTokenOverrides.js","sourceRoot":"","sources":["../../../../src/features/theme/utils/resolveHeadingTokenOverrides.ts"],"names":[],"mappings":"AAQA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACrE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAEnF,MAAM,UAAU,4BAA4B,CAC1C,QAAuB,EACvB,SAAgF;IAEhF,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC/B,OAAO;QACL,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAAgF;IAEhF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,qCAAqC,GAAG,GAAG,CAAC,CAAC;IAChG,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,GAAW,EACX,QAAsB,EACtB,QAAqD;IAErD,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;IAC7C,MAAM,UAAU,GAAG,QAAQ,EAAE,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC;IAC/D,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,UAAU,CAClB,mCAAmC,GAAG,yCAAyC,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,UAAU,CAClB,mCAAmC,GAAG,+CAA+C,CACtF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAAC,kDAAkD,GAAG,KAAK,MAAM,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC","sourcesContent":["import type { ThemeTypographyHeadingOverrides } from '@ankhorage/contracts';\n\nimport type { ThemeTokens } from '../../../types/theme';\n\ntype HeadingTokens = ThemeTokens['typography']['headings'];\ntype HeadingToken = HeadingTokens[1];\ntype HeadingWeight = HeadingToken['weight'];\n\nconst HEADING_KEYS = new Set<string>(['1', '2', '3', '4', '5', '6']);\nconst HEADING_WEIGHTS = new Set<string>(['regular', 'medium', 'semiBold', 'bold']);\n\nexport function resolveHeadingTokenOverrides(\n defaults: HeadingTokens,\n overrides: Readonly<Record<string, ThemeTypographyHeadingOverrides>> | undefined,\n): HeadingTokens {\n validateHeadingKeys(overrides);\n return {\n 1: resolveHeading('1', defaults[1], overrides?.['1']),\n 2: resolveHeading('2', defaults[2], overrides?.['2']),\n 3: resolveHeading('3', defaults[3], overrides?.['3']),\n 4: resolveHeading('4', defaults[4], overrides?.['4']),\n 5: resolveHeading('5', defaults[5], overrides?.['5']),\n 6: resolveHeading('6', defaults[6], overrides?.['6']),\n };\n}\n\nfunction validateHeadingKeys(\n overrides: Readonly<Record<string, ThemeTypographyHeadingOverrides>> | undefined,\n): void {\n for (const key of Object.keys(overrides ?? {})) {\n if (!HEADING_KEYS.has(key)) throw new RangeError(`Unknown typography heading token: ${key}.`);\n }\n}\n\nfunction resolveHeading(\n key: string,\n fallback: HeadingToken,\n override: ThemeTypographyHeadingOverrides | undefined,\n): HeadingToken {\n const size = override?.size ?? fallback.size;\n const lineHeight = override?.lineHeight ?? fallback.lineHeight;\n const weight = override?.weight ?? fallback.weight;\n if (!Number.isFinite(size) || size <= 0) {\n throw new RangeError(\n `Theme token typography.headings.${key}.size must be a finite positive number.`,\n );\n }\n if (!Number.isFinite(lineHeight) || lineHeight <= 0) {\n throw new RangeError(\n `Theme token typography.headings.${key}.lineHeight must be a finite positive number.`,\n );\n }\n if (!isHeadingWeight(weight)) {\n throw new RangeError(`Invalid heading weight for typography.headings.${key}: ${weight}.`);\n }\n return { size, lineHeight, weight };\n}\n\nfunction isHeadingWeight(value: string): value is HeadingWeight {\n return HEADING_WEIGHTS.has(value);\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveNumericTokenOverrides.d.ts","sourceRoot":"","sources":["../../../../src/features/theme/utils/resolveNumericTokenOverrides.ts"],"names":[],"mappings":"AAAA,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EACvD,eAAe,UAAQ,GACtB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAclC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveNumericTokenOverrides.js","sourceRoot":"","sources":["../../../../src/features/theme/utils/resolveNumericTokenOverrides.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,4BAA4B,CAC1C,MAAc,EACd,SAAuD,EACvD,eAAe,GAAG,KAAK;IAEvB,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACtF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,WAAW,GAAG,eAAe;gBACjC,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,8BAA8B,CAAC;YACnC,MAAM,IAAI,UAAU,CAAC,eAAe,MAAM,IAAI,KAAK,YAAY,WAAW,GAAG,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;AAC1B,CAAC","sourcesContent":["export function resolveNumericTokenOverrides(\n family: string,\n overrides: Readonly<Record<string, number>> | undefined,\n requirePositive = false,\n): Readonly<Record<string, number>> {\n if (overrides === undefined) return {};\n\n for (const [token, value] of Object.entries(overrides)) {\n const invalid = !Number.isFinite(value) || (requirePositive ? value <= 0 : value < 0);\n if (invalid) {\n const expectation = requirePositive\n ? 'a finite positive number'\n : 'a finite non-negative number';\n throw new RangeError(`Theme token ${family}.${token} must be ${expectation}.`);\n }\n }\n\n return { ...overrides };\n}\n"]}
@@ -1,12 +1,6 @@
1
- /**
2
- * 1. Define the Conditional Logic
3
- * If TValue is a key of TMap, return the map's value type.
4
- * Otherwise, return TValue itself.
5
- */
1
+ /*** Resolve a theme token key through its map while preserving raw values. */
6
2
  type ResolvedToken<TMap, TValue> = TValue extends keyof TMap ? TMap[TValue] : TValue;
7
- /**
8
- * 2. The Generic Function
9
- */
3
+ /*** Resolve a mapped theme token or return the supplied raw value unchanged. */
10
4
  export declare function resolveToken<TMap extends Record<string | number, unknown>, TValue extends string | number | undefined>(map: TMap, value: TValue): ResolvedToken<TMap, TValue>;
11
5
  export {};
12
6
  //# sourceMappingURL=resolveToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveToken.d.ts","sourceRoot":"","sources":["../../../../src/features/theme/utils/resolveToken.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,KAAK,aAAa,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,SAAS,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAErF,gFAAgF;AAChF,wBAAgB,YAAY,CAC1B,IAAI,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAC7C,MAAM,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,EAC1C,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAQvD"}
@@ -0,0 +1,10 @@
1
+ /*** Resolve a mapped theme token or return the supplied raw value unchanged. */
2
+ export function resolveToken(map, value) {
3
+ if (value === undefined)
4
+ return undefined;
5
+ if (Object.prototype.hasOwnProperty.call(map, value)) {
6
+ return map[value];
7
+ }
8
+ return value;
9
+ }
10
+ //# sourceMappingURL=resolveToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveToken.js","sourceRoot":"","sources":["../../../../src/features/theme/utils/resolveToken.ts"],"names":[],"mappings":"AAGA,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAG1B,GAAS,EAAE,KAAa;IACxB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAwC,CAAC;IAEzE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,GAAG,CAAC,KAAmB,CAAgC,CAAC;IACjE,CAAC;IAED,OAAO,KAAoC,CAAC;AAC9C,CAAC","sourcesContent":["/*** Resolve a theme token key through its map while preserving raw values. */\ntype ResolvedToken<TMap, TValue> = TValue extends keyof TMap ? TMap[TValue] : TValue;\n\n/*** Resolve a mapped theme token or return the supplied raw value unchanged. */\nexport function resolveToken<\n TMap extends Record<string | number, unknown>,\n TValue extends string | number | undefined,\n>(map: TMap, value: TValue): ResolvedToken<TMap, TValue> {\n if (value === undefined) return undefined as ResolvedToken<TMap, TValue>;\n\n if (Object.prototype.hasOwnProperty.call(map, value)) {\n return map[value as keyof TMap] as ResolvedToken<TMap, TValue>;\n }\n\n return value as ResolvedToken<TMap, TValue>;\n}\n"]}
@@ -1,3 +1,3 @@
1
- import type { FontWeight } from './types';
1
+ import type { FontWeight } from '../../../types/theme';
2
2
  export declare function resolveWeightTokenOverrides(overrides: Readonly<Record<string, string>> | undefined): Readonly<Record<string, FontWeight>>;
3
3
  //# sourceMappingURL=resolveWeightTokenOverrides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveWeightTokenOverrides.d.ts","sourceRoot":"","sources":["../../../../src/features/theme/utils/resolveWeightTokenOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AA2BvD,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GACtD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CActC"}
@@ -25,17 +25,15 @@ const FONT_WEIGHT_VALUES = new Set([
25
25
  export function resolveWeightTokenOverrides(overrides) {
26
26
  if (overrides === undefined)
27
27
  return {};
28
- const resolved = {};
29
- for (const [token, value] of Object.entries(overrides)) {
28
+ return Object.fromEntries(Object.entries(overrides).map(([token, value]) => {
30
29
  if (!WEIGHT_TOKEN_KEYS.has(token)) {
31
30
  throw new RangeError(`Unknown typography weight token: ${token}.`);
32
31
  }
33
32
  if (!isFontWeight(value)) {
34
33
  throw new RangeError(`Invalid font weight for typography.weights.${token}: ${value}.`);
35
34
  }
36
- resolved[token] = value;
37
- }
38
- return resolved;
35
+ return [token, value];
36
+ }));
39
37
  }
40
38
  function isFontWeight(value) {
41
39
  return FONT_WEIGHT_VALUES.has(value);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveWeightTokenOverrides.js","sourceRoot":"","sources":["../../../../src/features/theme/utils/resolveWeightTokenOverrides.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS;IACxC,MAAM;IACN,YAAY;IACZ,OAAO;IACP,SAAS;IACT,QAAQ;IACR,UAAU;IACV,MAAM;IACN,WAAW;IACX,OAAO;CACR,CAAC,CAAC;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS;IACzC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,2BAA2B,CACzC,SAAuD;IAEvD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAEvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;QAC/C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,UAAU,CAAC,oCAAoC,KAAK,GAAG,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,UAAU,CAAC,8CAA8C,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,KAAK,CAAU,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC","sourcesContent":["import type { FontWeight } from '../../../types/theme';\n\nconst WEIGHT_TOKEN_KEYS = new Set<string>([\n 'thin',\n 'extraLight',\n 'light',\n 'regular',\n 'medium',\n 'semiBold',\n 'bold',\n 'extraBold',\n 'black',\n]);\nconst FONT_WEIGHT_VALUES = new Set<string>([\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'bold',\n 'normal',\n]);\n\nexport function resolveWeightTokenOverrides(\n overrides: Readonly<Record<string, string>> | undefined,\n): Readonly<Record<string, FontWeight>> {\n if (overrides === undefined) return {};\n\n return Object.fromEntries(\n Object.entries(overrides).map(([token, value]) => {\n if (!WEIGHT_TOKEN_KEYS.has(token)) {\n throw new RangeError(`Unknown typography weight token: ${token}.`);\n }\n if (!isFontWeight(value)) {\n throw new RangeError(`Invalid font weight for typography.weights.${token}: ${value}.`);\n }\n return [token, value] as const;\n }),\n );\n}\n\nfunction isFontWeight(value: string): value is FontWeight {\n return FONT_WEIGHT_VALUES.has(value);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../../../src/features/toast/adapters/inbound/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAK1D,iDAAiD;AACjD,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,WAAW,EACX,MAAkB,EAClB,SAAS,EACT,iBAA6B,EAC7B,MAAM,GACP,EAAE,UAAU,qBAkCZ"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../../../src/features/toast/adapters/inbound/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAM1D,iDAAiD;AACjD,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,WAAW,EACX,MAAkB,EAClB,SAAS,EACT,iBAA6B,EAC7B,MAAM,GACP,EAAE,UAAU,qBAkCZ"}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { Pressable, StyleSheet } from 'react-native';
3
- import { useTheme } from '../../../../theme/ThemeContext';
4
3
  import { View } from '../../../layout/public';
5
4
  import { Surface } from '../../../surface/public';
5
+ import { useTheme } from '../../../theme/runtime';
6
6
  import { Text } from '../../../typography/public';
7
7
  /*** Renders one transient toast notification. */
8
8
  export function Toast({ title, description, status = 'default', onDismiss, interactionPolicy = 'enabled', testID, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../../../src/features/toast/adapters/inbound/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAkB,MAAM,cAAc,CAAC;AAGrE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG1D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,iDAAiD;AACjD,MAAM,UAAU,KAAK,CAAC,EACpB,KAAK,EACL,WAAW,EACX,MAAM,GAAG,SAAS,EAClB,SAAS,EACT,iBAAiB,GAAG,SAAS,EAC7B,MAAM,GACK;IACX,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,iBAAiB,KAAK,SAAS,CAAC;IAChD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAC/B,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,EACxC,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,OAAO,CACL,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAChF;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAC1D;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACZ;UAAA,CAAC,KAAK,CAAC,CAAC,CAAC,CACP,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CACnC;cAAA,CAAC,KAAK,CACR;YAAA,EAAE,IAAI,CAAC,CACR,CAAC,CAAC,CAAC,IAAI,CACR;UAAA,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACnE;QAAA,EAAE,IAAI,CACN;QAAA,CAAC,SAAS,CAAC,CAAC,CAAC,CACX,CAAC,SAAS,CACR,kBAAkB,CAAC,sBAAsB,CACzC,iBAAiB,CAAC,QAAQ,CAC1B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CACzC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAEjD;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,IAAI,CACvC;UAAA,EAAE,SAAS,CAAC,CACb,CAAC,CAAC,CAAC,IAAI,CACV;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,OAAO,CAAC,CACX,CAAC;AACJ,CAAC;AAED,8DAA8D;AAC9D,SAAS,uBAAuB,CAAC,KAAmB,EAAE,MAA4B;IAChF,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC;YACE,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,SAAS,2BAA2B,CAAC,MAA4B;IAC/D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE;QACJ,eAAe,EAAE,CAAC;QAClB,QAAQ,EAAE,GAAG;QACb,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;QACrC,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,EAAE;KACjB;CACF,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport { Pressable, StyleSheet, type ViewStyle } from 'react-native';\n\nimport type { SurfaceColor } from '../../../../surfaceColor';\nimport { useTheme } from '../../../../theme/ThemeContext';\nimport type { SurfaceTheme } from '../../../../theme/types';\nimport type { ToastProps } from '../../../../types/toast';\nimport { View } from '../../../layout/public';\nimport { Surface } from '../../../surface/public';\nimport { Text } from '../../../typography/public';\n\n/*** Renders one transient toast notification. */\nexport function Toast({\n title,\n description,\n status = 'default',\n onDismiss,\n interactionPolicy = 'enabled',\n testID,\n}: ToastProps) {\n const { theme } = useTheme();\n const statusColor = resolveToastStatusColor(theme, status);\n const statusTextColor = resolveToastStatusTextColor(status);\n const passive = interactionPolicy === 'passive';\n const statusStyle = React.useMemo<ViewStyle>(\n () => ({ borderLeftColor: statusColor }),\n [statusColor],\n );\n\n return (\n <Surface p=\"m\" style={[styles.root, statusStyle]} testID={testID} variant=\"raised\">\n <View align=\"center\" direction=\"row\" justify=\"space-between\">\n <View flex={1}>\n {title ? (\n <Text variant=\"label\" weight=\"medium\">\n {title}\n </Text>\n ) : null}\n {description ? <Text emphasis=\"muted\">{description}</Text> : null}\n </View>\n {onDismiss ? (\n <Pressable\n accessibilityLabel=\"Dismiss notification\"\n accessibilityRole=\"button\"\n onPress={passive ? undefined : onDismiss}\n testID={testID ? `${testID}-dismiss` : undefined}\n >\n <Text color={statusTextColor}>×</Text>\n </Pressable>\n ) : null}\n </View>\n </Surface>\n );\n}\n\n/*** Resolves the border color representing a toast status. */\nfunction resolveToastStatusColor(theme: SurfaceTheme, status: ToastProps['status']) {\n switch (status) {\n case 'success':\n return theme.semantics.success.base;\n case 'warning':\n return theme.semantics.warning.base;\n case 'error':\n return theme.semantics.error.base;\n case 'info':\n return theme.semantics.info.base;\n default:\n return theme.semantics.action.primary.base;\n }\n}\n\n/*** Resolves the semantic text color representing a toast status. */\nfunction resolveToastStatusTextColor(status: ToastProps['status']): SurfaceColor {\n switch (status) {\n case 'success':\n return 'success';\n case 'warning':\n return 'warning';\n case 'error':\n return 'error';\n case 'info':\n return 'info';\n default:\n return 'primary';\n }\n}\n\nconst styles = StyleSheet.create({\n root: {\n borderLeftWidth: 3,\n minWidth: 280,\n shadowOffset: { height: 6, width: 0 },\n shadowOpacity: 0.14,\n shadowRadius: 12,\n },\n});\n"]}
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../../../src/features/toast/adapters/inbound/Toast.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Pressable, StyleSheet, type ViewStyle } from 'react-native';\n\nimport type { SurfaceColor } from '../../../../types/surfaceColor';\nimport type { SurfaceTheme } from '../../../../types/theme';\nimport type { ToastProps } from '../../../../types/toast';\nimport { View } from '../../../layout/public';\nimport { Surface } from '../../../surface/public';\nimport { useTheme } from '../../../theme/runtime';\nimport { Text } from '../../../typography/public';\n\n/*** Renders one transient toast notification. */\nexport function Toast({\n title,\n description,\n status = 'default',\n onDismiss,\n interactionPolicy = 'enabled',\n testID,\n}: ToastProps) {\n const { theme } = useTheme();\n const statusColor = resolveToastStatusColor(theme, status);\n const statusTextColor = resolveToastStatusTextColor(status);\n const passive = interactionPolicy === 'passive';\n const statusStyle = React.useMemo<ViewStyle>(\n () => ({ borderLeftColor: statusColor }),\n [statusColor],\n );\n\n return (\n <Surface p=\"m\" style={[styles.root, statusStyle]} testID={testID} variant=\"raised\">\n <View align=\"center\" direction=\"row\" justify=\"space-between\">\n <View flex={1}>\n {title ? (\n <Text variant=\"label\" weight=\"medium\">\n {title}\n </Text>\n ) : null}\n {description ? <Text emphasis=\"muted\">{description}</Text> : null}\n </View>\n {onDismiss ? (\n <Pressable\n accessibilityLabel=\"Dismiss notification\"\n accessibilityRole=\"button\"\n onPress={passive ? undefined : onDismiss}\n testID={testID ? `${testID}-dismiss` : undefined}\n >\n <Text color={statusTextColor}>×</Text>\n </Pressable>\n ) : null}\n </View>\n </Surface>\n );\n}\n\n/*** Resolves the border color representing a toast status. */\nfunction resolveToastStatusColor(theme: SurfaceTheme, status: ToastProps['status']) {\n switch (status) {\n case 'success':\n return theme.semantics.success.base;\n case 'warning':\n return theme.semantics.warning.base;\n case 'error':\n return theme.semantics.error.base;\n case 'info':\n return theme.semantics.info.base;\n default:\n return theme.semantics.action.primary.base;\n }\n}\n\n/*** Resolves the semantic text color representing a toast status. */\nfunction resolveToastStatusTextColor(status: ToastProps['status']): SurfaceColor {\n switch (status) {\n case 'success':\n return 'success';\n case 'warning':\n return 'warning';\n case 'error':\n return 'error';\n case 'info':\n return 'info';\n default:\n return 'primary';\n }\n}\n\nconst styles = StyleSheet.create({\n root: {\n borderLeftWidth: 3,\n minWidth: 280,\n shadowOffset: { height: 6, width: 0 },\n shadowOpacity: 0.14,\n shadowRadius: 12,\n },\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../../../src/features/tooltip/adapters/inbound/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAM9D,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,OAAO,EACP,KAAW,EACX,iBAA6B,EAC7B,SAAiB,EACjB,MAAM,GACP,EAAE,YAAY,qBAqCd"}
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../../../src/features/tooltip/adapters/inbound/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAO9D,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,OAAO,EACP,KAAW,EACX,iBAA6B,EAC7B,SAAiB,EACjB,MAAM,GACP,EAAE,YAAY,qBAqCd"}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { Platform, Pressable, View } from 'react-native';
3
- import { useTheme } from '../../../../theme/ThemeContext';
4
3
  import { Popover } from '../../../popover/public';
5
4
  import { Surface } from '../../../surface/public';
5
+ import { useTheme } from '../../../theme/runtime';
6
6
  import { Text } from '../../../typography/public';
7
7
  import { useTooltipVisibility } from '../../composition/useTooltipVisibility';
8
8
  /*** Presents delayed hover/focus help through the shared Popover foundation. */
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../../../src/features/tooltip/adapters/inbound/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,gFAAgF;AAChF,MAAM,UAAU,OAAO,CAAC,EACtB,QAAQ,EACR,OAAO,EACP,KAAK,GAAG,GAAG,EACX,iBAAiB,GAAG,SAAS,EAC7B,SAAS,GAAG,KAAK,EACjB,MAAM,GACO;IACb,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,iBAAiB,KAAK,SAAS,CAAC;IAChD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjF,OAAO,CACL,CAAC,OAAO,CACN,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAC3B,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,YAAY,CAAC,CAAC,UAAU,CAAC,CACzB,IAAI,CAAC,CAAC,OAAO,CAAC,CACd,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CACZ,CAAC,SAAS,CACR,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CACnC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CACpC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAChE,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAEjE;UAAA,CAAC,QAAQ,CACX;QAAA,EAAE,SAAS,CAAC,CACb,CAAC,CAEF;MAAA,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CACxB;QAAA,CAAC,OAAO,CACN,CAAC,CAAC,GAAG,CACL,KAAK,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAC5D,OAAO,CAAC,QAAQ,CAEhB;UAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CACxC;YAAA,CAAC,OAAO,CACV;UAAA,EAAE,IAAI,CACR;QAAA,EAAE,OAAO,CACX;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,OAAO,CAAC,CACX,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\nimport { Platform, Pressable, View } from 'react-native';\n\nimport { useTheme } from '../../../../theme/ThemeContext';\nimport type { TooltipProps } from '../../../../types/tooltip';\nimport { Popover } from '../../../popover/public';\nimport { Surface } from '../../../surface/public';\nimport { Text } from '../../../typography/public';\nimport { useTooltipVisibility } from '../../composition/useTooltipVisibility';\n\n/*** Presents delayed hover/focus help through the shared Popover foundation. */\nexport function Tooltip({\n children,\n content,\n delay = 150,\n interactionPolicy = 'enabled',\n placement = 'top',\n testID,\n}: TooltipProps) {\n const { theme } = useTheme();\n const passive = interactionPolicy === 'passive';\n const { hide, setVisible, show, visible } = useTooltipVisibility(delay, passive);\n\n return (\n <Popover\n closeOnOutsidePress={false}\n interactionPolicy={interactionPolicy}\n onOpenChange={setVisible}\n open={visible}\n placement={placement}\n testID={testID}\n anchor={() => (\n <Pressable\n onBlur={passive ? undefined : hide}\n onFocus={passive ? undefined : show}\n onHoverIn={Platform.OS === 'web' && !passive ? show : undefined}\n onHoverOut={Platform.OS === 'web' && !passive ? hide : undefined}\n >\n {children}\n </Pressable>\n )}\n >\n <View pointerEvents=\"none\">\n <Surface\n p=\"s\"\n style={{ backgroundColor: theme.semantics.surface.inverse }}\n variant=\"raised\"\n >\n <Text emphasis=\"inverse\" variant=\"caption\">\n {content}\n </Text>\n </Surface>\n </View>\n </Popover>\n );\n}\n"]}
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../../../src/features/tooltip/adapters/inbound/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,gFAAgF;AAChF,MAAM,UAAU,OAAO,CAAC,EACtB,QAAQ,EACR,OAAO,EACP,KAAK,GAAG,GAAG,EACX,iBAAiB,GAAG,SAAS,EAC7B,SAAS,GAAG,KAAK,EACjB,MAAM,GACO;IACb,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,iBAAiB,KAAK,SAAS,CAAC;IAChD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjF,OAAO,CACL,CAAC,OAAO,CACN,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAC3B,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,YAAY,CAAC,CAAC,UAAU,CAAC,CACzB,IAAI,CAAC,CAAC,OAAO,CAAC,CACd,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CACZ,CAAC,SAAS,CACR,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CACnC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CACpC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAChE,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAEjE;UAAA,CAAC,QAAQ,CACX;QAAA,EAAE,SAAS,CAAC,CACb,CAAC,CAEF;MAAA,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CACxB;QAAA,CAAC,OAAO,CACN,CAAC,CAAC,GAAG,CACL,KAAK,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAC5D,OAAO,CAAC,QAAQ,CAEhB;UAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CACxC;YAAA,CAAC,OAAO,CACV;UAAA,EAAE,IAAI,CACR;QAAA,EAAE,OAAO,CACX;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,OAAO,CAAC,CACX,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\nimport { Platform, Pressable, View } from 'react-native';\n\nimport type { TooltipProps } from '../../../../types/tooltip';\nimport { Popover } from '../../../popover/public';\nimport { Surface } from '../../../surface/public';\nimport { useTheme } from '../../../theme/runtime';\nimport { Text } from '../../../typography/public';\nimport { useTooltipVisibility } from '../../composition/useTooltipVisibility';\n\n/*** Presents delayed hover/focus help through the shared Popover foundation. */\nexport function Tooltip({\n children,\n content,\n delay = 150,\n interactionPolicy = 'enabled',\n placement = 'top',\n testID,\n}: TooltipProps) {\n const { theme } = useTheme();\n const passive = interactionPolicy === 'passive';\n const { hide, setVisible, show, visible } = useTooltipVisibility(delay, passive);\n\n return (\n <Popover\n closeOnOutsidePress={false}\n interactionPolicy={interactionPolicy}\n onOpenChange={setVisible}\n open={visible}\n placement={placement}\n testID={testID}\n anchor={() => (\n <Pressable\n onBlur={passive ? undefined : hide}\n onFocus={passive ? undefined : show}\n onHoverIn={Platform.OS === 'web' && !passive ? show : undefined}\n onHoverOut={Platform.OS === 'web' && !passive ? hide : undefined}\n >\n {children}\n </Pressable>\n )}\n >\n <View pointerEvents=\"none\">\n <Surface\n p=\"s\"\n style={{ backgroundColor: theme.semantics.surface.inverse }}\n variant=\"raised\"\n >\n <Text emphasis=\"inverse\" variant=\"caption\">\n {content}\n </Text>\n </Surface>\n </View>\n </Popover>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { HeadingProps } from '../../../../types/typography';
3
- /*** Renders a semantic, translatable heading using Surface typography tokens. */
4
- export declare function Heading({ text, children, level, align, color, emphasis, numberOfLines, i18nKey, testID, }: HeadingProps): React.JSX.Element;
3
+ /*** Renders a semantic heading using Surface typography tokens. */
4
+ export declare function Heading({ text, children, level, align, color, emphasis, numberOfLines, testID, }: HeadingProps): React.JSX.Element;
5
5
  //# sourceMappingURL=Heading.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../../../../src/features/typography/adapters/inbound/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGjE,iFAAiF;AACjF,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,QAAQ,EACR,KAAS,EACT,KAAK,EACL,KAAK,EACL,QAAoB,EACpB,aAAa,EACb,OAAO,EACP,MAAM,GACP,EAAE,YAAY,qBAed"}
1
+ {"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../../../../src/features/typography/adapters/inbound/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAIjE,mEAAmE;AACnE,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,QAAQ,EACR,KAAS,EACT,KAAK,EACL,KAAK,EACL,QAAoB,EACpB,aAAa,EACb,MAAM,GACP,EAAE,YAAY,qBAcd"}
@@ -1,29 +1,13 @@
1
1
  import React from 'react';
2
2
  import { Text as ReactNativeText } from 'react-native';
3
- import { useTranslationContext } from '../../../../context/TranslationContext';
4
- import { useTheme } from '../../../../theme/ThemeContext';
3
+ import { useTheme } from '../../../theme/runtime';
5
4
  import { resolveHeadingTextStyle } from '../../utils/resolveHeadingTextStyle';
6
- /*** Renders a semantic, translatable heading using Surface typography tokens. */
7
- export function Heading({ text, children, level = 2, align, color, emphasis = 'default', numberOfLines, i18nKey, testID, }) {
5
+ /*** Renders a semantic heading using Surface typography tokens. */
6
+ export function Heading({ text, children, level = 2, align, color, emphasis = 'default', numberOfLines, testID, }) {
8
7
  const { theme } = useTheme();
9
- const { t } = useTranslationContext();
10
- const content = resolveHeadingContent({ text, children, i18nKey, translate: t });
8
+ const content = text ?? children;
11
9
  return (<ReactNativeText accessibilityRole="header" testID={testID} numberOfLines={numberOfLines} style={resolveHeadingTextStyle(theme, level, align, emphasis, color)}>
12
10
  {content}
13
11
  </ReactNativeText>);
14
12
  }
15
- /*** Resolves authored or translated heading content without mutating source input. */
16
- function resolveHeadingContent({ text, children, i18nKey, translate, }) {
17
- const content = text ?? children;
18
- if (!i18nKey)
19
- return content;
20
- try {
21
- const translated = translate(i18nKey);
22
- return translated && translated !== i18nKey ? translated : content;
23
- }
24
- catch (error) {
25
- console.warn('[Heading] Translation error:', error);
26
- return content;
27
- }
28
- }
29
13
  //# sourceMappingURL=Heading.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Heading.js","sourceRoot":"","sources":["../../../../../src/features/typography/adapters/inbound/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,iFAAiF;AACjF,MAAM,UAAU,OAAO,CAAC,EACtB,IAAI,EACJ,QAAQ,EACR,KAAK,GAAG,CAAC,EACT,KAAK,EACL,KAAK,EACL,QAAQ,GAAG,SAAS,EACpB,aAAa,EACb,OAAO,EACP,MAAM,GACO;IACb,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,CAAC,EAAE,GAAG,qBAAqB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAEjF,OAAO,CACL,CAAC,eAAe,CACd,iBAAiB,CAAC,QAAQ,CAC1B,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,KAAK,CAAC,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAErE;MAAA,CAAC,OAAO,CACV;IAAA,EAAE,eAAe,CAAC,CACnB,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,SAAS,qBAAqB,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,SAAS,GAMV;IACC,MAAM,OAAO,GAAG,IAAI,IAAI,QAAQ,CAAC;IACjC,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,UAAU,IAAI,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC","sourcesContent":["import React from 'react';\nimport { Text as ReactNativeText } from 'react-native';\n\nimport { useTranslationContext } from '../../../../context/TranslationContext';\nimport { useTheme } from '../../../../theme/ThemeContext';\nimport type { HeadingProps } from '../../../../types/typography';\nimport { resolveHeadingTextStyle } from '../../utils/resolveHeadingTextStyle';\n\n/*** Renders a semantic, translatable heading using Surface typography tokens. */\nexport function Heading({\n text,\n children,\n level = 2,\n align,\n color,\n emphasis = 'default',\n numberOfLines,\n i18nKey,\n testID,\n}: HeadingProps) {\n const { theme } = useTheme();\n const { t } = useTranslationContext();\n const content = resolveHeadingContent({ text, children, i18nKey, translate: t });\n\n return (\n <ReactNativeText\n accessibilityRole=\"header\"\n testID={testID}\n numberOfLines={numberOfLines}\n style={resolveHeadingTextStyle(theme, level, align, emphasis, color)}\n >\n {content}\n </ReactNativeText>\n );\n}\n\n/*** Resolves authored or translated heading content without mutating source input. */\nfunction resolveHeadingContent({\n text,\n children,\n i18nKey,\n translate,\n}: {\n text: HeadingProps['text'];\n children: HeadingProps['children'];\n i18nKey: HeadingProps['i18nKey'];\n translate: (key: string) => string;\n}) {\n const content = text ?? children;\n if (!i18nKey) return content;\n\n try {\n const translated = translate(i18nKey);\n return translated && translated !== i18nKey ? translated : content;\n } catch (error) {\n console.warn('[Heading] Translation error:', error);\n return content;\n }\n}\n"]}
1
+ {"version":3,"file":"Heading.js","sourceRoot":"","sources":["../../../../../src/features/typography/adapters/inbound/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,mEAAmE;AACnE,MAAM,UAAU,OAAO,CAAC,EACtB,IAAI,EACJ,QAAQ,EACR,KAAK,GAAG,CAAC,EACT,KAAK,EACL,KAAK,EACL,QAAQ,GAAG,SAAS,EACpB,aAAa,EACb,MAAM,GACO;IACb,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,IAAI,QAAQ,CAAC;IAEjC,OAAO,CACL,CAAC,eAAe,CACd,iBAAiB,CAAC,QAAQ,CAC1B,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,KAAK,CAAC,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAErE;MAAA,CAAC,OAAO,CACV;IAAA,EAAE,eAAe,CAAC,CACnB,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\nimport { Text as ReactNativeText } from 'react-native';\n\nimport type { HeadingProps } from '../../../../types/typography';\nimport { useTheme } from '../../../theme/runtime';\nimport { resolveHeadingTextStyle } from '../../utils/resolveHeadingTextStyle';\n\n/*** Renders a semantic heading using Surface typography tokens. */\nexport function Heading({\n text,\n children,\n level = 2,\n align,\n color,\n emphasis = 'default',\n numberOfLines,\n testID,\n}: HeadingProps) {\n const { theme } = useTheme();\n const content = text ?? children;\n\n return (\n <ReactNativeText\n accessibilityRole=\"header\"\n testID={testID}\n numberOfLines={numberOfLines}\n style={resolveHeadingTextStyle(theme, level, align, emphasis, color)}\n >\n {content}\n </ReactNativeText>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { TextProps } from '../../../../types/typography';
3
- /*** Renders translatable body text using Surface semantic typography. */
3
+ /*** Renders body text using Surface semantic typography. */
4
4
  export declare function Text({ children, i18nKey, variant, emphasis, color, align, weight, italic, numberOfLines, testID, }: TextProps): React.JSX.Element;
5
5
  //# sourceMappingURL=Text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../../src/features/typography/adapters/inbound/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,yEAAyE;AACzE,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,OAAO,EACP,OAAgB,EAChB,QAAoB,EACpB,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAc,EACd,aAAa,EACb,MAAM,GACP,EAAE,SAAS,qBAiBX"}
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../../src/features/typography/adapters/inbound/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAG9D,4DAA4D;AAC5D,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,OAAO,EACP,OAAgB,EAChB,QAAoB,EACpB,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAc,EACd,aAAa,EACb,MAAM,GACP,EAAE,SAAS,qBAgBX"}