blend-native 0.0.1-beta.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 (555) hide show
  1. package/README.md +404 -0
  2. package/lib/commonjs/a11y/announcement.js +42 -0
  3. package/lib/commonjs/a11y/announcement.js.map +1 -0
  4. package/lib/commonjs/a11y/useLiveRegion.js +37 -0
  5. package/lib/commonjs/a11y/useLiveRegion.js.map +1 -0
  6. package/lib/commonjs/adapters/cssStringAdapter.js +363 -0
  7. package/lib/commonjs/adapters/cssStringAdapter.js.map +1 -0
  8. package/lib/commonjs/adapters/optionalGradient.js +33 -0
  9. package/lib/commonjs/adapters/optionalGradient.js.map +1 -0
  10. package/lib/commonjs/adapters/surfaceStyle.js +159 -0
  11. package/lib/commonjs/adapters/surfaceStyle.js.map +1 -0
  12. package/lib/commonjs/components/Alert/Alert.js +130 -0
  13. package/lib/commonjs/components/Alert/Alert.js.map +1 -0
  14. package/lib/commonjs/components/Alert/AlertActions.js +74 -0
  15. package/lib/commonjs/components/Alert/AlertActions.js.map +1 -0
  16. package/lib/commonjs/components/Alert/AlertClose.js +48 -0
  17. package/lib/commonjs/components/Alert/AlertClose.js.map +1 -0
  18. package/lib/commonjs/components/Alert/AlertText.js +49 -0
  19. package/lib/commonjs/components/Alert/AlertText.js.map +1 -0
  20. package/lib/commonjs/components/Alert/alert.tokens.js +6 -0
  21. package/lib/commonjs/components/Alert/alert.tokens.js.map +1 -0
  22. package/lib/commonjs/components/Alert/alert.types.js +6 -0
  23. package/lib/commonjs/components/Alert/alert.types.js.map +1 -0
  24. package/lib/commonjs/components/Alert/alert.utils.js +80 -0
  25. package/lib/commonjs/components/Alert/alert.utils.js.map +1 -0
  26. package/lib/commonjs/components/Alert/index.js +51 -0
  27. package/lib/commonjs/components/Alert/index.js.map +1 -0
  28. package/lib/commonjs/components/Button/Button.js +125 -0
  29. package/lib/commonjs/components/Button/Button.js.map +1 -0
  30. package/lib/commonjs/components/Button/button.types.js +6 -0
  31. package/lib/commonjs/components/Button/button.types.js.map +1 -0
  32. package/lib/commonjs/components/Button/button.utils.js +129 -0
  33. package/lib/commonjs/components/Button/button.utils.js.map +1 -0
  34. package/lib/commonjs/components/Button/index.js +57 -0
  35. package/lib/commonjs/components/Button/index.js.map +1 -0
  36. package/lib/commonjs/components/Skeleton/Skeleton.js +154 -0
  37. package/lib/commonjs/components/Skeleton/Skeleton.js.map +1 -0
  38. package/lib/commonjs/components/Skeleton/index.js +20 -0
  39. package/lib/commonjs/components/Skeleton/index.js.map +1 -0
  40. package/lib/commonjs/components/Skeleton/skeleton.types.js +6 -0
  41. package/lib/commonjs/components/Skeleton/skeleton.types.js.map +1 -0
  42. package/lib/commonjs/components/Skeleton/skeleton.utils.js +45 -0
  43. package/lib/commonjs/components/Skeleton/skeleton.utils.js.map +1 -0
  44. package/lib/commonjs/components/Tag/Tag.js +161 -0
  45. package/lib/commonjs/components/Tag/Tag.js.map +1 -0
  46. package/lib/commonjs/components/Tag/index.js +33 -0
  47. package/lib/commonjs/components/Tag/index.js.map +1 -0
  48. package/lib/commonjs/components/Tag/tag.types.js +6 -0
  49. package/lib/commonjs/components/Tag/tag.types.js.map +1 -0
  50. package/lib/commonjs/components/Tag/tag.utils.js +69 -0
  51. package/lib/commonjs/components/Tag/tag.utils.js.map +1 -0
  52. package/lib/commonjs/components/TextInput/TextInput.js +138 -0
  53. package/lib/commonjs/components/TextInput/TextInput.js.map +1 -0
  54. package/lib/commonjs/components/TextInput/index.js +14 -0
  55. package/lib/commonjs/components/TextInput/index.js.map +1 -0
  56. package/lib/commonjs/components/TextInput/textInput.types.js +6 -0
  57. package/lib/commonjs/components/TextInput/textInput.types.js.map +1 -0
  58. package/lib/commonjs/components/TextInput/textInput.utils.js +40 -0
  59. package/lib/commonjs/components/TextInput/textInput.utils.js.map +1 -0
  60. package/lib/commonjs/components/shared/field/FieldFooter.js +51 -0
  61. package/lib/commonjs/components/shared/field/FieldFooter.js.map +1 -0
  62. package/lib/commonjs/components/shared/field/FieldLabels.js +67 -0
  63. package/lib/commonjs/components/shared/field/FieldLabels.js.map +1 -0
  64. package/lib/commonjs/components/shared/field/fieldState.js +37 -0
  65. package/lib/commonjs/components/shared/field/fieldState.js.map +1 -0
  66. package/lib/commonjs/components/shared/group.js +73 -0
  67. package/lib/commonjs/components/shared/group.js.map +1 -0
  68. package/lib/commonjs/index.js +256 -0
  69. package/lib/commonjs/index.js.map +1 -0
  70. package/lib/commonjs/motion/motion.js +128 -0
  71. package/lib/commonjs/motion/motion.js.map +1 -0
  72. package/lib/commonjs/motion/useReduceMotion.js +37 -0
  73. package/lib/commonjs/motion/useReduceMotion.js.map +1 -0
  74. package/lib/commonjs/overlay/portal.js +110 -0
  75. package/lib/commonjs/overlay/portal.js.map +1 -0
  76. package/lib/commonjs/overlay/positioning.js +122 -0
  77. package/lib/commonjs/overlay/positioning.js.map +1 -0
  78. package/lib/commonjs/overlay/safeAreaInsets.js +30 -0
  79. package/lib/commonjs/overlay/safeAreaInsets.js.map +1 -0
  80. package/lib/commonjs/overlay/sheet/BottomSheet.js +196 -0
  81. package/lib/commonjs/overlay/sheet/BottomSheet.js.map +1 -0
  82. package/lib/commonjs/overlay/sheet/sheetMath.js +60 -0
  83. package/lib/commonjs/overlay/sheet/sheetMath.js.map +1 -0
  84. package/lib/commonjs/overlay/toast/ToastOutlet.js +106 -0
  85. package/lib/commonjs/overlay/toast/ToastOutlet.js.map +1 -0
  86. package/lib/commonjs/overlay/toast/toastStore.js +76 -0
  87. package/lib/commonjs/overlay/toast/toastStore.js.map +1 -0
  88. package/lib/commonjs/overlay/useAnchoredPosition.js +85 -0
  89. package/lib/commonjs/overlay/useAnchoredPosition.js.map +1 -0
  90. package/lib/commonjs/package.json +1 -0
  91. package/lib/commonjs/primitives/Block.js +112 -0
  92. package/lib/commonjs/primitives/Block.js.map +1 -0
  93. package/lib/commonjs/primitives/Pressable.js +348 -0
  94. package/lib/commonjs/primitives/Pressable.js.map +1 -0
  95. package/lib/commonjs/primitives/PrimitiveInput.js +66 -0
  96. package/lib/commonjs/primitives/PrimitiveInput.js.map +1 -0
  97. package/lib/commonjs/primitives/Separator.js +55 -0
  98. package/lib/commonjs/primitives/Separator.js.map +1 -0
  99. package/lib/commonjs/primitives/Slot.js +78 -0
  100. package/lib/commonjs/primitives/Slot.js.map +1 -0
  101. package/lib/commonjs/primitives/Text.js +73 -0
  102. package/lib/commonjs/primitives/Text.js.map +1 -0
  103. package/lib/commonjs/primitives/pressFeedback.js +53 -0
  104. package/lib/commonjs/primitives/pressFeedback.js.map +1 -0
  105. package/lib/commonjs/primitives/textStyle.js +27 -0
  106. package/lib/commonjs/primitives/textStyle.js.map +1 -0
  107. package/lib/commonjs/primitives/tintSlot.js +45 -0
  108. package/lib/commonjs/primitives/tintSlot.js.map +1 -0
  109. package/lib/commonjs/primitives/touchTarget.js +64 -0
  110. package/lib/commonjs/primitives/touchTarget.js.map +1 -0
  111. package/lib/commonjs/theme/BlendNativeProvider.js +90 -0
  112. package/lib/commonjs/theme/BlendNativeProvider.js.map +1 -0
  113. package/lib/commonjs/theme/breakpoint.js +36 -0
  114. package/lib/commonjs/theme/breakpoint.js.map +1 -0
  115. package/lib/commonjs/theme/fonts.js +58 -0
  116. package/lib/commonjs/theme/fonts.js.map +1 -0
  117. package/lib/commonjs/theme/nativeTokenRegistry.js +44 -0
  118. package/lib/commonjs/theme/nativeTokenRegistry.js.map +1 -0
  119. package/lib/commonjs/theme/systemTheme.js +35 -0
  120. package/lib/commonjs/theme/systemTheme.js.map +1 -0
  121. package/lib/commonjs/theme/useNativeBreakpoint.js +33 -0
  122. package/lib/commonjs/theme/useNativeBreakpoint.js.map +1 -0
  123. package/lib/commonjs/theme/useNativeTokens.js +71 -0
  124. package/lib/commonjs/theme/useNativeTokens.js.map +1 -0
  125. package/lib/module/a11y/announcement.js +38 -0
  126. package/lib/module/a11y/announcement.js.map +1 -0
  127. package/lib/module/a11y/useLiveRegion.js +33 -0
  128. package/lib/module/a11y/useLiveRegion.js.map +1 -0
  129. package/lib/module/adapters/cssStringAdapter.js +352 -0
  130. package/lib/module/adapters/cssStringAdapter.js.map +1 -0
  131. package/lib/module/adapters/optionalGradient.js +29 -0
  132. package/lib/module/adapters/optionalGradient.js.map +1 -0
  133. package/lib/module/adapters/surfaceStyle.js +155 -0
  134. package/lib/module/adapters/surfaceStyle.js.map +1 -0
  135. package/lib/module/components/Alert/Alert.js +126 -0
  136. package/lib/module/components/Alert/Alert.js.map +1 -0
  137. package/lib/module/components/Alert/AlertActions.js +70 -0
  138. package/lib/module/components/Alert/AlertActions.js.map +1 -0
  139. package/lib/module/components/Alert/AlertClose.js +44 -0
  140. package/lib/module/components/Alert/AlertClose.js.map +1 -0
  141. package/lib/module/components/Alert/AlertText.js +45 -0
  142. package/lib/module/components/Alert/AlertText.js.map +1 -0
  143. package/lib/module/components/Alert/alert.tokens.js +4 -0
  144. package/lib/module/components/Alert/alert.tokens.js.map +1 -0
  145. package/lib/module/components/Alert/alert.types.js +4 -0
  146. package/lib/module/components/Alert/alert.types.js.map +1 -0
  147. package/lib/module/components/Alert/alert.utils.js +72 -0
  148. package/lib/module/components/Alert/alert.utils.js.map +1 -0
  149. package/lib/module/components/Alert/index.js +6 -0
  150. package/lib/module/components/Alert/index.js.map +1 -0
  151. package/lib/module/components/Button/Button.js +121 -0
  152. package/lib/module/components/Button/Button.js.map +1 -0
  153. package/lib/module/components/Button/button.types.js +4 -0
  154. package/lib/module/components/Button/button.types.js.map +1 -0
  155. package/lib/module/components/Button/button.utils.js +120 -0
  156. package/lib/module/components/Button/button.utils.js.map +1 -0
  157. package/lib/module/components/Button/index.js +5 -0
  158. package/lib/module/components/Button/index.js.map +1 -0
  159. package/lib/module/components/Skeleton/Skeleton.js +149 -0
  160. package/lib/module/components/Skeleton/Skeleton.js.map +1 -0
  161. package/lib/module/components/Skeleton/index.js +4 -0
  162. package/lib/module/components/Skeleton/index.js.map +1 -0
  163. package/lib/module/components/Skeleton/skeleton.types.js +4 -0
  164. package/lib/module/components/Skeleton/skeleton.types.js.map +1 -0
  165. package/lib/module/components/Skeleton/skeleton.utils.js +40 -0
  166. package/lib/module/components/Skeleton/skeleton.utils.js.map +1 -0
  167. package/lib/module/components/Tag/Tag.js +157 -0
  168. package/lib/module/components/Tag/Tag.js.map +1 -0
  169. package/lib/module/components/Tag/index.js +5 -0
  170. package/lib/module/components/Tag/index.js.map +1 -0
  171. package/lib/module/components/Tag/tag.types.js +4 -0
  172. package/lib/module/components/Tag/tag.types.js.map +1 -0
  173. package/lib/module/components/Tag/tag.utils.js +64 -0
  174. package/lib/module/components/Tag/tag.utils.js.map +1 -0
  175. package/lib/module/components/TextInput/TextInput.js +134 -0
  176. package/lib/module/components/TextInput/TextInput.js.map +1 -0
  177. package/lib/module/components/TextInput/index.js +4 -0
  178. package/lib/module/components/TextInput/index.js.map +1 -0
  179. package/lib/module/components/TextInput/textInput.types.js +4 -0
  180. package/lib/module/components/TextInput/textInput.types.js.map +1 -0
  181. package/lib/module/components/TextInput/textInput.utils.js +36 -0
  182. package/lib/module/components/TextInput/textInput.utils.js.map +1 -0
  183. package/lib/module/components/shared/field/FieldFooter.js +47 -0
  184. package/lib/module/components/shared/field/FieldFooter.js.map +1 -0
  185. package/lib/module/components/shared/field/FieldLabels.js +63 -0
  186. package/lib/module/components/shared/field/FieldLabels.js.map +1 -0
  187. package/lib/module/components/shared/field/fieldState.js +33 -0
  188. package/lib/module/components/shared/field/fieldState.js.map +1 -0
  189. package/lib/module/components/shared/group.js +68 -0
  190. package/lib/module/components/shared/group.js.map +1 -0
  191. package/lib/module/index.js +80 -0
  192. package/lib/module/index.js.map +1 -0
  193. package/lib/module/motion/motion.js +123 -0
  194. package/lib/module/motion/motion.js.map +1 -0
  195. package/lib/module/motion/useReduceMotion.js +33 -0
  196. package/lib/module/motion/useReduceMotion.js.map +1 -0
  197. package/lib/module/overlay/portal.js +104 -0
  198. package/lib/module/overlay/portal.js.map +1 -0
  199. package/lib/module/overlay/positioning.js +118 -0
  200. package/lib/module/overlay/positioning.js.map +1 -0
  201. package/lib/module/overlay/safeAreaInsets.js +27 -0
  202. package/lib/module/overlay/safeAreaInsets.js.map +1 -0
  203. package/lib/module/overlay/sheet/BottomSheet.js +190 -0
  204. package/lib/module/overlay/sheet/BottomSheet.js.map +1 -0
  205. package/lib/module/overlay/sheet/sheetMath.js +53 -0
  206. package/lib/module/overlay/sheet/sheetMath.js.map +1 -0
  207. package/lib/module/overlay/toast/ToastOutlet.js +101 -0
  208. package/lib/module/overlay/toast/ToastOutlet.js.map +1 -0
  209. package/lib/module/overlay/toast/toastStore.js +66 -0
  210. package/lib/module/overlay/toast/toastStore.js.map +1 -0
  211. package/lib/module/overlay/useAnchoredPosition.js +82 -0
  212. package/lib/module/overlay/useAnchoredPosition.js.map +1 -0
  213. package/lib/module/package.json +1 -0
  214. package/lib/module/primitives/Block.js +107 -0
  215. package/lib/module/primitives/Block.js.map +1 -0
  216. package/lib/module/primitives/Pressable.js +339 -0
  217. package/lib/module/primitives/Pressable.js.map +1 -0
  218. package/lib/module/primitives/PrimitiveInput.js +62 -0
  219. package/lib/module/primitives/PrimitiveInput.js.map +1 -0
  220. package/lib/module/primitives/Separator.js +50 -0
  221. package/lib/module/primitives/Separator.js.map +1 -0
  222. package/lib/module/primitives/Slot.js +69 -0
  223. package/lib/module/primitives/Slot.js.map +1 -0
  224. package/lib/module/primitives/Text.js +68 -0
  225. package/lib/module/primitives/Text.js.map +1 -0
  226. package/lib/module/primitives/pressFeedback.js +48 -0
  227. package/lib/module/primitives/pressFeedback.js.map +1 -0
  228. package/lib/module/primitives/textStyle.js +23 -0
  229. package/lib/module/primitives/textStyle.js.map +1 -0
  230. package/lib/module/primitives/tintSlot.js +42 -0
  231. package/lib/module/primitives/tintSlot.js.map +1 -0
  232. package/lib/module/primitives/touchTarget.js +58 -0
  233. package/lib/module/primitives/touchTarget.js.map +1 -0
  234. package/lib/module/theme/BlendNativeProvider.js +78 -0
  235. package/lib/module/theme/BlendNativeProvider.js.map +1 -0
  236. package/lib/module/theme/breakpoint.js +33 -0
  237. package/lib/module/theme/breakpoint.js.map +1 -0
  238. package/lib/module/theme/fonts.js +55 -0
  239. package/lib/module/theme/fonts.js.map +1 -0
  240. package/lib/module/theme/nativeTokenRegistry.js +40 -0
  241. package/lib/module/theme/nativeTokenRegistry.js.map +1 -0
  242. package/lib/module/theme/systemTheme.js +31 -0
  243. package/lib/module/theme/systemTheme.js.map +1 -0
  244. package/lib/module/theme/useNativeBreakpoint.js +24 -0
  245. package/lib/module/theme/useNativeBreakpoint.js.map +1 -0
  246. package/lib/module/theme/useNativeTokens.js +67 -0
  247. package/lib/module/theme/useNativeTokens.js.map +1 -0
  248. package/lib/typescript/commonjs/a11y/announcement.d.ts +26 -0
  249. package/lib/typescript/commonjs/a11y/announcement.d.ts.map +1 -0
  250. package/lib/typescript/commonjs/a11y/useLiveRegion.d.ts +17 -0
  251. package/lib/typescript/commonjs/a11y/useLiveRegion.d.ts.map +1 -0
  252. package/lib/typescript/commonjs/adapters/cssStringAdapter.d.ts +119 -0
  253. package/lib/typescript/commonjs/adapters/cssStringAdapter.d.ts.map +1 -0
  254. package/lib/typescript/commonjs/adapters/optionalGradient.d.ts +32 -0
  255. package/lib/typescript/commonjs/adapters/optionalGradient.d.ts.map +1 -0
  256. package/lib/typescript/commonjs/adapters/surfaceStyle.d.ts +75 -0
  257. package/lib/typescript/commonjs/adapters/surfaceStyle.d.ts.map +1 -0
  258. package/lib/typescript/commonjs/components/Alert/Alert.d.ts +14 -0
  259. package/lib/typescript/commonjs/components/Alert/Alert.d.ts.map +1 -0
  260. package/lib/typescript/commonjs/components/Alert/AlertActions.d.ts +13 -0
  261. package/lib/typescript/commonjs/components/Alert/AlertActions.d.ts.map +1 -0
  262. package/lib/typescript/commonjs/components/Alert/AlertClose.d.ts +22 -0
  263. package/lib/typescript/commonjs/components/Alert/AlertClose.d.ts.map +1 -0
  264. package/lib/typescript/commonjs/components/Alert/AlertText.d.ts +19 -0
  265. package/lib/typescript/commonjs/components/Alert/AlertText.d.ts.map +1 -0
  266. package/lib/typescript/commonjs/components/Alert/alert.tokens.d.ts +17 -0
  267. package/lib/typescript/commonjs/components/Alert/alert.tokens.d.ts.map +1 -0
  268. package/lib/typescript/commonjs/components/Alert/alert.types.d.ts +70 -0
  269. package/lib/typescript/commonjs/components/Alert/alert.types.d.ts.map +1 -0
  270. package/lib/typescript/commonjs/components/Alert/alert.utils.d.ts +58 -0
  271. package/lib/typescript/commonjs/components/Alert/alert.utils.d.ts.map +1 -0
  272. package/lib/typescript/commonjs/components/Alert/index.d.ts +7 -0
  273. package/lib/typescript/commonjs/components/Alert/index.d.ts.map +1 -0
  274. package/lib/typescript/commonjs/components/Button/Button.d.ts +22 -0
  275. package/lib/typescript/commonjs/components/Button/Button.d.ts.map +1 -0
  276. package/lib/typescript/commonjs/components/Button/button.types.d.ts +37 -0
  277. package/lib/typescript/commonjs/components/Button/button.types.d.ts.map +1 -0
  278. package/lib/typescript/commonjs/components/Button/button.utils.d.ts +98 -0
  279. package/lib/typescript/commonjs/components/Button/button.utils.d.ts.map +1 -0
  280. package/lib/typescript/commonjs/components/Button/index.d.ts +5 -0
  281. package/lib/typescript/commonjs/components/Button/index.d.ts.map +1 -0
  282. package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts +7 -0
  283. package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts.map +1 -0
  284. package/lib/typescript/commonjs/components/Skeleton/index.d.ts +3 -0
  285. package/lib/typescript/commonjs/components/Skeleton/index.d.ts.map +1 -0
  286. package/lib/typescript/commonjs/components/Skeleton/skeleton.types.d.ts +25 -0
  287. package/lib/typescript/commonjs/components/Skeleton/skeleton.types.d.ts.map +1 -0
  288. package/lib/typescript/commonjs/components/Skeleton/skeleton.utils.d.ts +21 -0
  289. package/lib/typescript/commonjs/components/Skeleton/skeleton.utils.d.ts.map +1 -0
  290. package/lib/typescript/commonjs/components/Tag/Tag.d.ts +21 -0
  291. package/lib/typescript/commonjs/components/Tag/Tag.d.ts.map +1 -0
  292. package/lib/typescript/commonjs/components/Tag/index.d.ts +4 -0
  293. package/lib/typescript/commonjs/components/Tag/index.d.ts.map +1 -0
  294. package/lib/typescript/commonjs/components/Tag/tag.types.d.ts +56 -0
  295. package/lib/typescript/commonjs/components/Tag/tag.types.d.ts.map +1 -0
  296. package/lib/typescript/commonjs/components/Tag/tag.utils.d.ts +41 -0
  297. package/lib/typescript/commonjs/components/Tag/tag.utils.d.ts.map +1 -0
  298. package/lib/typescript/commonjs/components/TextInput/TextInput.d.ts +33 -0
  299. package/lib/typescript/commonjs/components/TextInput/TextInput.d.ts.map +1 -0
  300. package/lib/typescript/commonjs/components/TextInput/index.d.ts +3 -0
  301. package/lib/typescript/commonjs/components/TextInput/index.d.ts.map +1 -0
  302. package/lib/typescript/commonjs/components/TextInput/textInput.types.d.ts +45 -0
  303. package/lib/typescript/commonjs/components/TextInput/textInput.types.d.ts.map +1 -0
  304. package/lib/typescript/commonjs/components/TextInput/textInput.utils.d.ts +35 -0
  305. package/lib/typescript/commonjs/components/TextInput/textInput.utils.d.ts.map +1 -0
  306. package/lib/typescript/commonjs/components/shared/field/FieldFooter.d.ts +22 -0
  307. package/lib/typescript/commonjs/components/shared/field/FieldFooter.d.ts.map +1 -0
  308. package/lib/typescript/commonjs/components/shared/field/FieldLabels.d.ts +27 -0
  309. package/lib/typescript/commonjs/components/shared/field/FieldLabels.d.ts.map +1 -0
  310. package/lib/typescript/commonjs/components/shared/field/fieldState.d.ts +23 -0
  311. package/lib/typescript/commonjs/components/shared/field/fieldState.d.ts.map +1 -0
  312. package/lib/typescript/commonjs/components/shared/group.d.ts +50 -0
  313. package/lib/typescript/commonjs/components/shared/group.d.ts.map +1 -0
  314. package/lib/typescript/commonjs/index.d.ts +74 -0
  315. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  316. package/lib/typescript/commonjs/motion/motion.d.ts +121 -0
  317. package/lib/typescript/commonjs/motion/motion.d.ts.map +1 -0
  318. package/lib/typescript/commonjs/motion/useReduceMotion.d.ts +14 -0
  319. package/lib/typescript/commonjs/motion/useReduceMotion.d.ts.map +1 -0
  320. package/lib/typescript/commonjs/overlay/portal.d.ts +20 -0
  321. package/lib/typescript/commonjs/overlay/portal.d.ts.map +1 -0
  322. package/lib/typescript/commonjs/overlay/positioning.d.ts +65 -0
  323. package/lib/typescript/commonjs/overlay/positioning.d.ts.map +1 -0
  324. package/lib/typescript/commonjs/overlay/safeAreaInsets.d.ts +19 -0
  325. package/lib/typescript/commonjs/overlay/safeAreaInsets.d.ts.map +1 -0
  326. package/lib/typescript/commonjs/overlay/sheet/BottomSheet.d.ts +56 -0
  327. package/lib/typescript/commonjs/overlay/sheet/BottomSheet.d.ts.map +1 -0
  328. package/lib/typescript/commonjs/overlay/sheet/sheetMath.d.ts +32 -0
  329. package/lib/typescript/commonjs/overlay/sheet/sheetMath.d.ts.map +1 -0
  330. package/lib/typescript/commonjs/overlay/toast/ToastOutlet.d.ts +17 -0
  331. package/lib/typescript/commonjs/overlay/toast/ToastOutlet.d.ts.map +1 -0
  332. package/lib/typescript/commonjs/overlay/toast/toastStore.d.ts +45 -0
  333. package/lib/typescript/commonjs/overlay/toast/toastStore.d.ts.map +1 -0
  334. package/lib/typescript/commonjs/overlay/useAnchoredPosition.d.ts +40 -0
  335. package/lib/typescript/commonjs/overlay/useAnchoredPosition.d.ts.map +1 -0
  336. package/lib/typescript/commonjs/package.json +1 -0
  337. package/lib/typescript/commonjs/primitives/Block.d.ts +37 -0
  338. package/lib/typescript/commonjs/primitives/Block.d.ts.map +1 -0
  339. package/lib/typescript/commonjs/primitives/Pressable.d.ts +135 -0
  340. package/lib/typescript/commonjs/primitives/Pressable.d.ts.map +1 -0
  341. package/lib/typescript/commonjs/primitives/PrimitiveInput.d.ts +42 -0
  342. package/lib/typescript/commonjs/primitives/PrimitiveInput.d.ts.map +1 -0
  343. package/lib/typescript/commonjs/primitives/Separator.d.ts +28 -0
  344. package/lib/typescript/commonjs/primitives/Separator.d.ts.map +1 -0
  345. package/lib/typescript/commonjs/primitives/Slot.d.ts +48 -0
  346. package/lib/typescript/commonjs/primitives/Slot.d.ts.map +1 -0
  347. package/lib/typescript/commonjs/primitives/Text.d.ts +50 -0
  348. package/lib/typescript/commonjs/primitives/Text.d.ts.map +1 -0
  349. package/lib/typescript/commonjs/primitives/pressFeedback.d.ts +39 -0
  350. package/lib/typescript/commonjs/primitives/pressFeedback.d.ts.map +1 -0
  351. package/lib/typescript/commonjs/primitives/textStyle.d.ts +13 -0
  352. package/lib/typescript/commonjs/primitives/textStyle.d.ts.map +1 -0
  353. package/lib/typescript/commonjs/primitives/tintSlot.d.ts +10 -0
  354. package/lib/typescript/commonjs/primitives/tintSlot.d.ts.map +1 -0
  355. package/lib/typescript/commonjs/primitives/touchTarget.d.ts +43 -0
  356. package/lib/typescript/commonjs/primitives/touchTarget.d.ts.map +1 -0
  357. package/lib/typescript/commonjs/theme/BlendNativeProvider.d.ts +69 -0
  358. package/lib/typescript/commonjs/theme/BlendNativeProvider.d.ts.map +1 -0
  359. package/lib/typescript/commonjs/theme/breakpoint.d.ts +27 -0
  360. package/lib/typescript/commonjs/theme/breakpoint.d.ts.map +1 -0
  361. package/lib/typescript/commonjs/theme/fonts.d.ts +34 -0
  362. package/lib/typescript/commonjs/theme/fonts.d.ts.map +1 -0
  363. package/lib/typescript/commonjs/theme/nativeTokenRegistry.d.ts +34 -0
  364. package/lib/typescript/commonjs/theme/nativeTokenRegistry.d.ts.map +1 -0
  365. package/lib/typescript/commonjs/theme/systemTheme.d.ts +25 -0
  366. package/lib/typescript/commonjs/theme/systemTheme.d.ts.map +1 -0
  367. package/lib/typescript/commonjs/theme/useNativeBreakpoint.d.ts +17 -0
  368. package/lib/typescript/commonjs/theme/useNativeBreakpoint.d.ts.map +1 -0
  369. package/lib/typescript/commonjs/theme/useNativeTokens.d.ts +4 -0
  370. package/lib/typescript/commonjs/theme/useNativeTokens.d.ts.map +1 -0
  371. package/lib/typescript/module/a11y/announcement.d.ts +26 -0
  372. package/lib/typescript/module/a11y/announcement.d.ts.map +1 -0
  373. package/lib/typescript/module/a11y/useLiveRegion.d.ts +17 -0
  374. package/lib/typescript/module/a11y/useLiveRegion.d.ts.map +1 -0
  375. package/lib/typescript/module/adapters/cssStringAdapter.d.ts +119 -0
  376. package/lib/typescript/module/adapters/cssStringAdapter.d.ts.map +1 -0
  377. package/lib/typescript/module/adapters/optionalGradient.d.ts +32 -0
  378. package/lib/typescript/module/adapters/optionalGradient.d.ts.map +1 -0
  379. package/lib/typescript/module/adapters/surfaceStyle.d.ts +75 -0
  380. package/lib/typescript/module/adapters/surfaceStyle.d.ts.map +1 -0
  381. package/lib/typescript/module/components/Alert/Alert.d.ts +14 -0
  382. package/lib/typescript/module/components/Alert/Alert.d.ts.map +1 -0
  383. package/lib/typescript/module/components/Alert/AlertActions.d.ts +13 -0
  384. package/lib/typescript/module/components/Alert/AlertActions.d.ts.map +1 -0
  385. package/lib/typescript/module/components/Alert/AlertClose.d.ts +22 -0
  386. package/lib/typescript/module/components/Alert/AlertClose.d.ts.map +1 -0
  387. package/lib/typescript/module/components/Alert/AlertText.d.ts +19 -0
  388. package/lib/typescript/module/components/Alert/AlertText.d.ts.map +1 -0
  389. package/lib/typescript/module/components/Alert/alert.tokens.d.ts +17 -0
  390. package/lib/typescript/module/components/Alert/alert.tokens.d.ts.map +1 -0
  391. package/lib/typescript/module/components/Alert/alert.types.d.ts +70 -0
  392. package/lib/typescript/module/components/Alert/alert.types.d.ts.map +1 -0
  393. package/lib/typescript/module/components/Alert/alert.utils.d.ts +58 -0
  394. package/lib/typescript/module/components/Alert/alert.utils.d.ts.map +1 -0
  395. package/lib/typescript/module/components/Alert/index.d.ts +7 -0
  396. package/lib/typescript/module/components/Alert/index.d.ts.map +1 -0
  397. package/lib/typescript/module/components/Button/Button.d.ts +22 -0
  398. package/lib/typescript/module/components/Button/Button.d.ts.map +1 -0
  399. package/lib/typescript/module/components/Button/button.types.d.ts +37 -0
  400. package/lib/typescript/module/components/Button/button.types.d.ts.map +1 -0
  401. package/lib/typescript/module/components/Button/button.utils.d.ts +98 -0
  402. package/lib/typescript/module/components/Button/button.utils.d.ts.map +1 -0
  403. package/lib/typescript/module/components/Button/index.d.ts +5 -0
  404. package/lib/typescript/module/components/Button/index.d.ts.map +1 -0
  405. package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +7 -0
  406. package/lib/typescript/module/components/Skeleton/Skeleton.d.ts.map +1 -0
  407. package/lib/typescript/module/components/Skeleton/index.d.ts +3 -0
  408. package/lib/typescript/module/components/Skeleton/index.d.ts.map +1 -0
  409. package/lib/typescript/module/components/Skeleton/skeleton.types.d.ts +25 -0
  410. package/lib/typescript/module/components/Skeleton/skeleton.types.d.ts.map +1 -0
  411. package/lib/typescript/module/components/Skeleton/skeleton.utils.d.ts +21 -0
  412. package/lib/typescript/module/components/Skeleton/skeleton.utils.d.ts.map +1 -0
  413. package/lib/typescript/module/components/Tag/Tag.d.ts +21 -0
  414. package/lib/typescript/module/components/Tag/Tag.d.ts.map +1 -0
  415. package/lib/typescript/module/components/Tag/index.d.ts +4 -0
  416. package/lib/typescript/module/components/Tag/index.d.ts.map +1 -0
  417. package/lib/typescript/module/components/Tag/tag.types.d.ts +56 -0
  418. package/lib/typescript/module/components/Tag/tag.types.d.ts.map +1 -0
  419. package/lib/typescript/module/components/Tag/tag.utils.d.ts +41 -0
  420. package/lib/typescript/module/components/Tag/tag.utils.d.ts.map +1 -0
  421. package/lib/typescript/module/components/TextInput/TextInput.d.ts +33 -0
  422. package/lib/typescript/module/components/TextInput/TextInput.d.ts.map +1 -0
  423. package/lib/typescript/module/components/TextInput/index.d.ts +3 -0
  424. package/lib/typescript/module/components/TextInput/index.d.ts.map +1 -0
  425. package/lib/typescript/module/components/TextInput/textInput.types.d.ts +45 -0
  426. package/lib/typescript/module/components/TextInput/textInput.types.d.ts.map +1 -0
  427. package/lib/typescript/module/components/TextInput/textInput.utils.d.ts +35 -0
  428. package/lib/typescript/module/components/TextInput/textInput.utils.d.ts.map +1 -0
  429. package/lib/typescript/module/components/shared/field/FieldFooter.d.ts +22 -0
  430. package/lib/typescript/module/components/shared/field/FieldFooter.d.ts.map +1 -0
  431. package/lib/typescript/module/components/shared/field/FieldLabels.d.ts +27 -0
  432. package/lib/typescript/module/components/shared/field/FieldLabels.d.ts.map +1 -0
  433. package/lib/typescript/module/components/shared/field/fieldState.d.ts +23 -0
  434. package/lib/typescript/module/components/shared/field/fieldState.d.ts.map +1 -0
  435. package/lib/typescript/module/components/shared/group.d.ts +50 -0
  436. package/lib/typescript/module/components/shared/group.d.ts.map +1 -0
  437. package/lib/typescript/module/index.d.ts +74 -0
  438. package/lib/typescript/module/index.d.ts.map +1 -0
  439. package/lib/typescript/module/motion/motion.d.ts +121 -0
  440. package/lib/typescript/module/motion/motion.d.ts.map +1 -0
  441. package/lib/typescript/module/motion/useReduceMotion.d.ts +14 -0
  442. package/lib/typescript/module/motion/useReduceMotion.d.ts.map +1 -0
  443. package/lib/typescript/module/overlay/portal.d.ts +20 -0
  444. package/lib/typescript/module/overlay/portal.d.ts.map +1 -0
  445. package/lib/typescript/module/overlay/positioning.d.ts +65 -0
  446. package/lib/typescript/module/overlay/positioning.d.ts.map +1 -0
  447. package/lib/typescript/module/overlay/safeAreaInsets.d.ts +19 -0
  448. package/lib/typescript/module/overlay/safeAreaInsets.d.ts.map +1 -0
  449. package/lib/typescript/module/overlay/sheet/BottomSheet.d.ts +56 -0
  450. package/lib/typescript/module/overlay/sheet/BottomSheet.d.ts.map +1 -0
  451. package/lib/typescript/module/overlay/sheet/sheetMath.d.ts +32 -0
  452. package/lib/typescript/module/overlay/sheet/sheetMath.d.ts.map +1 -0
  453. package/lib/typescript/module/overlay/toast/ToastOutlet.d.ts +17 -0
  454. package/lib/typescript/module/overlay/toast/ToastOutlet.d.ts.map +1 -0
  455. package/lib/typescript/module/overlay/toast/toastStore.d.ts +45 -0
  456. package/lib/typescript/module/overlay/toast/toastStore.d.ts.map +1 -0
  457. package/lib/typescript/module/overlay/useAnchoredPosition.d.ts +40 -0
  458. package/lib/typescript/module/overlay/useAnchoredPosition.d.ts.map +1 -0
  459. package/lib/typescript/module/package.json +1 -0
  460. package/lib/typescript/module/primitives/Block.d.ts +37 -0
  461. package/lib/typescript/module/primitives/Block.d.ts.map +1 -0
  462. package/lib/typescript/module/primitives/Pressable.d.ts +135 -0
  463. package/lib/typescript/module/primitives/Pressable.d.ts.map +1 -0
  464. package/lib/typescript/module/primitives/PrimitiveInput.d.ts +42 -0
  465. package/lib/typescript/module/primitives/PrimitiveInput.d.ts.map +1 -0
  466. package/lib/typescript/module/primitives/Separator.d.ts +28 -0
  467. package/lib/typescript/module/primitives/Separator.d.ts.map +1 -0
  468. package/lib/typescript/module/primitives/Slot.d.ts +48 -0
  469. package/lib/typescript/module/primitives/Slot.d.ts.map +1 -0
  470. package/lib/typescript/module/primitives/Text.d.ts +50 -0
  471. package/lib/typescript/module/primitives/Text.d.ts.map +1 -0
  472. package/lib/typescript/module/primitives/pressFeedback.d.ts +39 -0
  473. package/lib/typescript/module/primitives/pressFeedback.d.ts.map +1 -0
  474. package/lib/typescript/module/primitives/textStyle.d.ts +13 -0
  475. package/lib/typescript/module/primitives/textStyle.d.ts.map +1 -0
  476. package/lib/typescript/module/primitives/tintSlot.d.ts +10 -0
  477. package/lib/typescript/module/primitives/tintSlot.d.ts.map +1 -0
  478. package/lib/typescript/module/primitives/touchTarget.d.ts +43 -0
  479. package/lib/typescript/module/primitives/touchTarget.d.ts.map +1 -0
  480. package/lib/typescript/module/theme/BlendNativeProvider.d.ts +69 -0
  481. package/lib/typescript/module/theme/BlendNativeProvider.d.ts.map +1 -0
  482. package/lib/typescript/module/theme/breakpoint.d.ts +27 -0
  483. package/lib/typescript/module/theme/breakpoint.d.ts.map +1 -0
  484. package/lib/typescript/module/theme/fonts.d.ts +34 -0
  485. package/lib/typescript/module/theme/fonts.d.ts.map +1 -0
  486. package/lib/typescript/module/theme/nativeTokenRegistry.d.ts +34 -0
  487. package/lib/typescript/module/theme/nativeTokenRegistry.d.ts.map +1 -0
  488. package/lib/typescript/module/theme/systemTheme.d.ts +25 -0
  489. package/lib/typescript/module/theme/systemTheme.d.ts.map +1 -0
  490. package/lib/typescript/module/theme/useNativeBreakpoint.d.ts +17 -0
  491. package/lib/typescript/module/theme/useNativeBreakpoint.d.ts.map +1 -0
  492. package/lib/typescript/module/theme/useNativeTokens.d.ts +4 -0
  493. package/lib/typescript/module/theme/useNativeTokens.d.ts.map +1 -0
  494. package/package.json +137 -0
  495. package/src/a11y/announcement.ts +41 -0
  496. package/src/a11y/useLiveRegion.ts +36 -0
  497. package/src/adapters/cssStringAdapter.ts +403 -0
  498. package/src/adapters/optionalGradient.ts +39 -0
  499. package/src/adapters/surfaceStyle.ts +209 -0
  500. package/src/components/Alert/Alert.tsx +167 -0
  501. package/src/components/Alert/AlertActions.tsx +98 -0
  502. package/src/components/Alert/AlertClose.tsx +53 -0
  503. package/src/components/Alert/AlertText.tsx +58 -0
  504. package/src/components/Alert/alert.tokens.ts +24 -0
  505. package/src/components/Alert/alert.types.ts +81 -0
  506. package/src/components/Alert/alert.utils.ts +94 -0
  507. package/src/components/Alert/index.ts +21 -0
  508. package/src/components/Button/Button.tsx +180 -0
  509. package/src/components/Button/button.types.ts +44 -0
  510. package/src/components/Button/button.utils.ts +213 -0
  511. package/src/components/Button/index.ts +12 -0
  512. package/src/components/Skeleton/Skeleton.tsx +196 -0
  513. package/src/components/Skeleton/index.ts +2 -0
  514. package/src/components/Skeleton/skeleton.types.ts +28 -0
  515. package/src/components/Skeleton/skeleton.utils.ts +56 -0
  516. package/src/components/Tag/Tag.tsx +204 -0
  517. package/src/components/Tag/index.ts +7 -0
  518. package/src/components/Tag/tag.types.ts +63 -0
  519. package/src/components/Tag/tag.utils.ts +82 -0
  520. package/src/components/TextInput/TextInput.tsx +165 -0
  521. package/src/components/TextInput/index.ts +2 -0
  522. package/src/components/TextInput/textInput.types.ts +54 -0
  523. package/src/components/TextInput/textInput.utils.ts +68 -0
  524. package/src/components/shared/field/FieldFooter.tsx +66 -0
  525. package/src/components/shared/field/FieldLabels.tsx +86 -0
  526. package/src/components/shared/field/fieldState.ts +39 -0
  527. package/src/components/shared/group.ts +72 -0
  528. package/src/index.ts +144 -0
  529. package/src/motion/motion.ts +115 -0
  530. package/src/motion/useReduceMotion.ts +36 -0
  531. package/src/overlay/portal.tsx +122 -0
  532. package/src/overlay/positioning.ts +196 -0
  533. package/src/overlay/safeAreaInsets.ts +36 -0
  534. package/src/overlay/sheet/BottomSheet.tsx +276 -0
  535. package/src/overlay/sheet/sheetMath.ts +58 -0
  536. package/src/overlay/toast/ToastOutlet.tsx +127 -0
  537. package/src/overlay/toast/toastStore.ts +96 -0
  538. package/src/overlay/useAnchoredPosition.ts +92 -0
  539. package/src/primitives/Block.tsx +129 -0
  540. package/src/primitives/Pressable.tsx +528 -0
  541. package/src/primitives/PrimitiveInput.tsx +87 -0
  542. package/src/primitives/Separator.tsx +65 -0
  543. package/src/primitives/Slot.tsx +94 -0
  544. package/src/primitives/Text.tsx +98 -0
  545. package/src/primitives/pressFeedback.ts +78 -0
  546. package/src/primitives/textStyle.ts +24 -0
  547. package/src/primitives/tintSlot.ts +44 -0
  548. package/src/primitives/touchTarget.ts +72 -0
  549. package/src/theme/BlendNativeProvider.tsx +147 -0
  550. package/src/theme/breakpoint.ts +38 -0
  551. package/src/theme/fonts.ts +63 -0
  552. package/src/theme/nativeTokenRegistry.ts +57 -0
  553. package/src/theme/systemTheme.ts +34 -0
  554. package/src/theme/useNativeBreakpoint.ts +27 -0
  555. package/src/theme/useNativeTokens.ts +99 -0
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Press feedback is platform-idiomatic, not uniform.
5
+ *
6
+ * Web scales the surface by `0.99`, and that reads correctly on iOS where a
7
+ * subtle depress is the convention. Android users expect a **ripple**, and a
8
+ * scale transform there looks like a bug. Applying both would double the
9
+ * feedback.
10
+ *
11
+ * The decision lives here — a leaf module with no `react-native` value import
12
+ * — so it is unit-testable outside a renderer, the same split as
13
+ * `theme/breakpoint.ts`, `primitives/touchTarget.ts` and the shadow handling
14
+ * in `adapters/surfaceStyle.ts`. `Pressable` passes the real `Platform.OS`.
15
+ */
16
+
17
+ /**
18
+ * Ripple colour used when neither the caller nor the active-state token
19
+ * supplies one. Low-alpha black is Android's own default for light surfaces.
20
+ */
21
+ export const DEFAULT_RIPPLE_COLOR = 'rgba(0, 0, 0, 0.12)';
22
+ export function resolvePressFeedback(platform, options = {}) {
23
+ const {
24
+ rippleColor,
25
+ activeBackgroundColor,
26
+ rippleBorderless = false,
27
+ pressedScale = 0.99
28
+ } = options;
29
+ if (platform === 'android') {
30
+ return {
31
+ androidRipple: {
32
+ color: rippleColor ?? activeBackgroundColor ?? DEFAULT_RIPPLE_COLOR,
33
+ borderless: rippleBorderless
34
+ },
35
+ // The ripple is the feedback; scaling as well would double it.
36
+ pressedTransform: {}
37
+ };
38
+ }
39
+ return {
40
+ androidRipple: undefined,
41
+ pressedTransform: {
42
+ transform: [{
43
+ scale: pressedScale
44
+ }]
45
+ }
46
+ };
47
+ }
48
+ //# sourceMappingURL=pressFeedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_RIPPLE_COLOR","resolvePressFeedback","platform","options","rippleColor","activeBackgroundColor","rippleBorderless","pressedScale","androidRipple","color","borderless","pressedTransform","undefined","transform","scale"],"sourceRoot":"../../../src","sources":["primitives/pressFeedback.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAqBA;AACA;AACA;AACA;AACA,OAAO,MAAMA,oBAAoB,GAAG,qBAAqB;AAEzD,OAAO,SAASC,oBAAoBA,CAChCC,QAA+B,EAC/BC,OAOC,GAAG,CAAC,CAAC,EACO;EACb,MAAM;IACFC,WAAW;IACXC,qBAAqB;IACrBC,gBAAgB,GAAG,KAAK;IACxBC,YAAY,GAAG;EACnB,CAAC,GAAGJ,OAAO;EAEX,IAAID,QAAQ,KAAK,SAAS,EAAE;IACxB,OAAO;MACHM,aAAa,EAAE;QACXC,KAAK,EACDL,WAAW,IACXC,qBAAqB,IACrBL,oBAAoB;QACxBU,UAAU,EAAEJ;MAChB,CAAC;MACD;MACAK,gBAAgB,EAAE,CAAC;IACvB,CAAC;EACL;EAEA,OAAO;IACHH,aAAa,EAAEI,SAAS;IACxBD,gBAAgB,EAAE;MAAEE,SAAS,EAAE,CAAC;QAAEC,KAAK,EAAEP;MAAa,CAAC;IAAE;EAC7D,CAAC;AACL","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Shared text-style resolution for `Text` and `PrimitiveInput`.
5
+ *
6
+ * Leaf module with only a type import from `react-native`, so it stays
7
+ * vitest-testable — the `theme/breakpoint.ts` pattern.
8
+ */
9
+
10
+ /**
11
+ * Resolve a CSS font-weight value to a RN-compatible `TextStyle['fontWeight']`.
12
+ * RN accepts `'normal' | 'bold' | '100'..'900'` (as string or number).
13
+ */
14
+ export function resolveFontWeight(w) {
15
+ if (w === undefined) return undefined;
16
+ if (typeof w === 'number') return String(w);
17
+ // Token values are numeric strings like `"500"`.
18
+ if (/^\d+$/.test(w)) return w;
19
+ const lower = w.toLowerCase();
20
+ if (lower === 'normal' || lower === 'bold') return lower;
21
+ return undefined;
22
+ }
23
+ //# sourceMappingURL=textStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["resolveFontWeight","w","undefined","String","test","lower","toLowerCase"],"sourceRoot":"../../../src","sources":["primitives/textStyle.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASA,iBAAiBA,CAC7BC,CAA8B,EACP;EACvB,IAAIA,CAAC,KAAKC,SAAS,EAAE,OAAOA,SAAS;EACrC,IAAI,OAAOD,CAAC,KAAK,QAAQ,EAAE,OAAOE,MAAM,CAACF,CAAC,CAAC;EAC3C;EACA,IAAI,OAAO,CAACG,IAAI,CAACH,CAAC,CAAC,EAAE,OAAOA,CAAC;EAC7B,MAAMI,KAAK,GAAGJ,CAAC,CAACK,WAAW,CAAC,CAAC;EAC7B,IAAID,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,MAAM,EAAE,OAAOA,KAAK;EACxD,OAAOH,SAAS;AACpB","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ import { cloneElement, isValidElement } from 'react';
4
+
5
+ /**
6
+ * Icon tinting.
7
+ *
8
+ * Kept in its own leaf module — importing nothing from `react-native` — so it
9
+ * stays unit-testable outside a renderer, the same split as
10
+ * `theme/breakpoint.ts` and `primitives/touchTarget.ts`.
11
+ */
12
+
13
+ /**
14
+ * Props an icon element may accept for tinting.
15
+ *
16
+ * `color` is the channel every mainstream RN icon library understands —
17
+ * `lucide-react-native`, `phosphor-react-native`, `react-native-vector-icons`
18
+ * — and is what `Slot` sets.
19
+ *
20
+ * `fill` is deliberately NOT set. Lucide renders stroke-based artwork with
21
+ * `fill: "none"`, and its `Icon` spreads unknown props over both the root
22
+ * `Svg` and every child path *after* those defaults, so supplying a `fill`
23
+ * overrides `"none"` and floods the glyph solid — an outlined X becomes a
24
+ * filled block. Artwork that genuinely needs a fill should set it itself.
25
+ */
26
+
27
+ /**
28
+ * Apply a tint to an icon element.
29
+ *
30
+ * Only sets `color`, and only when the element has not set it explicitly —
31
+ * an icon rendered as `<Icon color="red" />` keeps red. Non-element children
32
+ * (a bare string, a number, `null`) are returned untouched.
33
+ */
34
+ export function tintSlot(node, color) {
35
+ if (!color || ! /*#__PURE__*/isValidElement(node)) return node;
36
+ const element = node;
37
+ if (element.props.color !== undefined) return node;
38
+ return /*#__PURE__*/cloneElement(element, {
39
+ color
40
+ });
41
+ }
42
+ //# sourceMappingURL=tintSlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["cloneElement","isValidElement","tintSlot","node","color","element","props","undefined"],"sourceRoot":"../../../src","sources":["primitives/tintSlot.ts"],"mappings":";;AAAA,SAASA,YAAY,EAAEC,cAAc,QAAQ,OAAO;;AAGpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CACpBC,IAAe,EACfC,KAAyB,EAChB;EACT,IAAI,CAACA,KAAK,IAAI,eAACH,cAAc,CAACE,IAAI,CAAC,EAAE,OAAOA,IAAI;EAEhD,MAAME,OAAO,GAAGF,IAAmC;EACnD,IAAIE,OAAO,CAACC,KAAK,CAACF,KAAK,KAAKG,SAAS,EAAE,OAAOJ,IAAI;EAElD,oBAAOH,YAAY,CAACK,OAAO,EAAE;IAAED;EAAM,CAAC,CAAC;AAC3C","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Minimum tap-target policy.
5
+ *
6
+ * Kept in its own leaf module — importing nothing from `react-native` — so it
7
+ * stays unit-testable outside a renderer. (RN's entrypoint ships Flow syntax
8
+ * that non-Metro bundlers cannot parse, so any module that value-imports it is
9
+ * unusable from a plain Node test runner. Same split as `theme/breakpoint.ts`.)
10
+ */
11
+
12
+ /** Inset applied to each edge of the touch region. */
13
+
14
+ /**
15
+ * Apple's Human Interface Guidelines minimum tappable size, in points. Also
16
+ * clears Material's 48dp target once RN's density conversion is applied.
17
+ */
18
+ export const MIN_TOUCH_TARGET = 44;
19
+
20
+ /**
21
+ * Slop needed to bring a rendered control up to the minimum tap target.
22
+ *
23
+ * Design-system controls are frequently smaller than the guideline by intent —
24
+ * an `xs` Tag is 20pt tall — so the fix is to widen the *touch* region rather
25
+ * than the control. Returns `undefined` when the control already complies (or
26
+ * when the minimum is disabled with `0`), so no `hitSlop` prop is emitted.
27
+ *
28
+ * ```
29
+ * resolveHitSlop(120, 48) -> undefined // already compliant
30
+ * resolveHitSlop(60, 20) -> { top: 12, bottom: 12, left: 0, right: 0 }
31
+ * resolveHitSlop(24, 24) -> { top: 10, bottom: 10, left: 10, right: 10 }
32
+ * ```
33
+ */
34
+ export function resolveHitSlop(width, height, minTouchTarget = MIN_TOUCH_TARGET) {
35
+ if (!minTouchTarget) return undefined;
36
+ const horizontal = Math.max(0, (minTouchTarget - width) / 2);
37
+ const vertical = Math.max(0, (minTouchTarget - height) / 2);
38
+ if (horizontal === 0 && vertical === 0) return undefined;
39
+ return {
40
+ top: vertical,
41
+ bottom: vertical,
42
+ left: horizontal,
43
+ right: horizontal
44
+ };
45
+ }
46
+
47
+ /**
48
+ * Whether two slop values are equivalent.
49
+ *
50
+ * Lets callers skip a state update when a re-measure produces the same result,
51
+ * which keeps a control that never needed slop from re-rendering at all.
52
+ */
53
+ export function sameHitSlop(a, b) {
54
+ if (a === b) return true;
55
+ if (!a || !b) return false;
56
+ return a.top === b.top && a.bottom === b.bottom && a.left === b.left && a.right === b.right;
57
+ }
58
+ //# sourceMappingURL=touchTarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MIN_TOUCH_TARGET","resolveHitSlop","width","height","minTouchTarget","undefined","horizontal","Math","max","vertical","top","bottom","left","right","sameHitSlop","a","b"],"sourceRoot":"../../../src","sources":["primitives/touchTarget.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAQA;AACA;AACA;AACA;AACA,OAAO,MAAMA,gBAAgB,GAAG,EAAE;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC1BC,KAAa,EACbC,MAAc,EACdC,cAAsB,GAAGJ,gBAAgB,EACtB;EACnB,IAAI,CAACI,cAAc,EAAE,OAAOC,SAAS;EAErC,MAAMC,UAAU,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAACJ,cAAc,GAAGF,KAAK,IAAI,CAAC,CAAC;EAC5D,MAAMO,QAAQ,GAAGF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAACJ,cAAc,GAAGD,MAAM,IAAI,CAAC,CAAC;EAC3D,IAAIG,UAAU,KAAK,CAAC,IAAIG,QAAQ,KAAK,CAAC,EAAE,OAAOJ,SAAS;EAExD,OAAO;IACHK,GAAG,EAAED,QAAQ;IACbE,MAAM,EAAEF,QAAQ;IAChBG,IAAI,EAAEN,UAAU;IAChBO,KAAK,EAAEP;EACX,CAAC;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASQ,WAAWA,CAACC,CAAW,EAAEC,CAAW,EAAW;EAC3D,IAAID,CAAC,KAAKC,CAAC,EAAE,OAAO,IAAI;EACxB,IAAI,CAACD,CAAC,IAAI,CAACC,CAAC,EAAE,OAAO,KAAK;EAC1B,OACID,CAAC,CAACL,GAAG,KAAKM,CAAC,CAACN,GAAG,IACfK,CAAC,CAACJ,MAAM,KAAKK,CAAC,CAACL,MAAM,IACrBI,CAAC,CAACH,IAAI,KAAKI,CAAC,CAACJ,IAAI,IACjBG,CAAC,CAACF,KAAK,KAAKG,CAAC,CAACH,KAAK;AAE3B","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ import React, { createContext, useMemo } from 'react';
4
+ import { useColorScheme } from 'react-native';
5
+ import { BREAKPOINTS, FOUNDATION_THEME, Theme } from '@juspay/blend-design-system/node';
6
+ import { PortalArea } from "../overlay/portal.js";
7
+ import { ToastOutlet } from "../overlay/toast/ToastOutlet.js";
8
+ import { resolveFontFamilies } from "./fonts.js";
9
+ import { resolveThemeSetting, SYSTEM_THEME } from "./systemTheme.js";
10
+
11
+ /**
12
+ * Theme context for `blend-native`.
13
+ *
14
+ * Replaces the per-component `theme` prop the package shipped with. A prop
15
+ * meant no app-wide dark mode (every call site had to thread it), no nested
16
+ * theme scopes, and — most importantly — no `componentTokens` overrides,
17
+ * which is a first-class feature of web Blend that native consumers simply
18
+ * did not have.
19
+ *
20
+ * Mirrors web's `ThemeProvider` API (`{ theme, componentTokens,
21
+ * foundationTokens }`) so the two platforms are configured the same way, and
22
+ * like web it is optional: components fall back to these defaults when no
23
+ * provider is mounted.
24
+ *
25
+ * Two native-only additions:
26
+ *
27
+ * - `theme="system"` follows the OS appearance via `useColorScheme`,
28
+ * re-rendering when the user flips light/dark. The sentinel is resolved
29
+ * *before* the value enters context, so consumers only ever see a concrete
30
+ * theme.
31
+ * - `fontFamily` resolves one font family per role (see `theme/fonts.ts`) —
32
+ * RN's replacement for web's CSS font inheritance.
33
+ */
34
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
35
+ const EMPTY_OVERRIDES = {};
36
+ export const DEFAULT_NATIVE_THEME = {
37
+ theme: Theme.LIGHT,
38
+ componentTokens: EMPTY_OVERRIDES,
39
+ foundationTokens: FOUNDATION_THEME,
40
+ breakpoints: BREAKPOINTS,
41
+ fontFamily: resolveFontFamilies(FOUNDATION_THEME)
42
+ };
43
+ export const BlendNativeThemeContext = /*#__PURE__*/createContext(DEFAULT_NATIVE_THEME);
44
+ export function BlendNativeProvider({
45
+ children,
46
+ theme = Theme.LIGHT,
47
+ componentTokens = EMPTY_OVERRIDES,
48
+ foundationTokens = FOUNDATION_THEME,
49
+ breakpoints = BREAKPOINTS,
50
+ fontFamily
51
+ }) {
52
+ // Subscribed unconditionally (hooks must be), but only `theme="system"`
53
+ // reads it — an explicit theme is unaffected by OS appearance changes.
54
+ const colorScheme = useColorScheme();
55
+ const resolvedTheme = resolveThemeSetting(theme, colorScheme);
56
+
57
+ // Memoised on the same keys web's `initTokens` uses: objects by
58
+ // reference (they are module-scope singletons in practice), theme by
59
+ // value. Keeps the context value stable so a re-render of the provider's
60
+ // parent does not invalidate every consumer's token memo.
61
+ const value = useMemo(() => ({
62
+ theme: resolvedTheme,
63
+ componentTokens,
64
+ foundationTokens,
65
+ breakpoints,
66
+ fontFamily: resolveFontFamilies(foundationTokens, fontFamily)
67
+ }), [resolvedTheme, componentTokens, foundationTokens, breakpoints, fontFamily]);
68
+ return /*#__PURE__*/_jsx(BlendNativeThemeContext.Provider, {
69
+ value: value,
70
+ children: /*#__PURE__*/_jsxs(PortalArea, {
71
+ children: [children, /*#__PURE__*/_jsx(ToastOutlet, {})]
72
+ })
73
+ });
74
+ }
75
+ BlendNativeProvider.displayName = 'BlendNativeProvider';
76
+ export { SYSTEM_THEME };
77
+ export default BlendNativeProvider;
78
+ //# sourceMappingURL=BlendNativeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createContext","useMemo","useColorScheme","BREAKPOINTS","FOUNDATION_THEME","Theme","PortalArea","ToastOutlet","resolveFontFamilies","resolveThemeSetting","SYSTEM_THEME","jsx","_jsx","jsxs","_jsxs","EMPTY_OVERRIDES","DEFAULT_NATIVE_THEME","theme","LIGHT","componentTokens","foundationTokens","breakpoints","fontFamily","BlendNativeThemeContext","BlendNativeProvider","children","colorScheme","resolvedTheme","value","Provider","displayName"],"sourceRoot":"../../../src","sources":["theme/BlendNativeProvider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,OAAO,QAAQ,OAAO;AACrD,SAASC,cAAc,QAAQ,cAAc;AAC7C,SACIC,WAAW,EACXC,gBAAgB,EAChBC,KAAK,QAEF,kCAAkC;AAEzC,SAASC,UAAU,QAAQ,sBAAmB;AAC9C,SAASC,WAAW,QAAQ,iCAA8B;AAC1D,SACIC,mBAAmB,QAGhB,YAAS;AAChB,SACIC,mBAAmB,EACnBC,YAAY,QAET,kBAAe;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtBA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiCA,MAAMC,eAA8C,GAAG,CAAC,CAAC;AAEzD,OAAO,MAAMC,oBAA2C,GAAG;EACvDC,KAAK,EAAEZ,KAAK,CAACa,KAAK;EAClBC,eAAe,EAAEJ,eAAe;EAChCK,gBAAgB,EAAEhB,gBAAgB;EAClCiB,WAAW,EAAElB,WAAW;EACxBmB,UAAU,EAAEd,mBAAmB,CAACJ,gBAAgB;AACpD,CAAC;AAED,OAAO,MAAMmB,uBAAuB,gBAChCvB,aAAa,CAAwBgB,oBAAoB,CAAC;AA2B9D,OAAO,SAASQ,mBAAmBA,CAAC;EAChCC,QAAQ;EACRR,KAAK,GAAGZ,KAAK,CAACa,KAAK;EACnBC,eAAe,GAAGJ,eAAe;EACjCK,gBAAgB,GAAGhB,gBAAgB;EACnCiB,WAAW,GAAGlB,WAAW;EACzBmB;AACsB,CAAC,EAAE;EACzB;EACA;EACA,MAAMI,WAAW,GAAGxB,cAAc,CAAC,CAAC;EACpC,MAAMyB,aAAa,GAAGlB,mBAAmB,CAACQ,KAAK,EAAES,WAAW,CAAC;;EAE7D;EACA;EACA;EACA;EACA,MAAME,KAAK,GAAG3B,OAAO,CACjB,OAAO;IACHgB,KAAK,EAAEU,aAAa;IACpBR,eAAe;IACfC,gBAAgB;IAChBC,WAAW;IACXC,UAAU,EAAEd,mBAAmB,CAACY,gBAAgB,EAAEE,UAAU;EAChE,CAAC,CAAC,EACF,CACIK,aAAa,EACbR,eAAe,EACfC,gBAAgB,EAChBC,WAAW,EACXC,UAAU,CAElB,CAAC;EAED,oBACIV,IAAA,CAACW,uBAAuB,CAACM,QAAQ;IAACD,KAAK,EAAEA,KAAM;IAAAH,QAAA,eAM3CX,KAAA,CAACR,UAAU;MAAAmB,QAAA,GACNA,QAAQ,eACTb,IAAA,CAACL,WAAW,IAAE,CAAC;IAAA,CACP;EAAC,CACiB,CAAC;AAE3C;AAEAiB,mBAAmB,CAACM,WAAW,GAAG,qBAAqB;AAEvD,SAASpB,YAAY;AAErB,eAAec,mBAAmB","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ import { BREAKPOINTS } from '@juspay/blend-design-system/node';
4
+
5
+ /**
6
+ * Pure breakpoint resolution.
7
+ *
8
+ * Kept in its own leaf module — importing nothing from `react-native` — so it
9
+ * stays testable and reusable outside a React render. `useNativeBreakpoint`
10
+ * layers the `useWindowDimensions` subscription on top.
11
+ *
12
+ * (React Native's entrypoint ships Flow syntax that non-Metro bundlers cannot
13
+ * parse, so any module that value-imports it is unusable from a plain Node
14
+ * test runner. Splitting the logic out is the same pattern the web package
15
+ * uses for `shared/datetime/timeCore.ts`.)
16
+ */
17
+
18
+ /**
19
+ * Resolve a viewport width to a Blend breakpoint label.
20
+ *
21
+ * Mirrors web's `useBreakPoints` exactly, including its quirk: **only**
22
+ * 320–1023 maps to `'sm'`; everything else — including widths below 320 —
23
+ * returns `'lg'`. Reproduced deliberately so a given width resolves to the
24
+ * same tokens on both platforms.
25
+ *
26
+ * Thresholds come from `BREAKPOINTS` in the web package rather than being
27
+ * duplicated, so retuning them stays a one-line change in one place.
28
+ */
29
+ export function resolveBreakpoint(width, breakpoints = BREAKPOINTS) {
30
+ if (width >= breakpoints.sm && width < breakpoints.lg) return 'sm';
31
+ return 'lg';
32
+ }
33
+ //# sourceMappingURL=breakpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BREAKPOINTS","resolveBreakpoint","width","breakpoints","sm","lg"],"sourceRoot":"../../../src","sources":["theme/breakpoint.ts"],"mappings":";;AAAA,SACIA,WAAW,QAER,kCAAkC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAC7BC,KAAa,EACbC,WAA2B,GAAGH,WAAW,EACzB;EAChB,IAAIE,KAAK,IAAIC,WAAW,CAACC,EAAE,IAAIF,KAAK,GAAGC,WAAW,CAACE,EAAE,EAAE,OAAO,IAAI;EAClE,OAAO,IAAI;AACf","ignoreList":[]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ import { FOUNDATION_THEME } from '@juspay/blend-design-system/node';
4
+
5
+ /**
6
+ * Font-family policy.
7
+ *
8
+ * Web never applies Blend's font tokens — components inherit whatever face the
9
+ * host document loads (`fontFamily: 'inherit'` in the primitives), and the
10
+ * consuming app supplies InterDisplay via `@font-face`. React Native has no
11
+ * inheritance and no `@font-face`, so the provider is the inheritance
12
+ * mechanism: it resolves one family per role and `Text` applies it.
13
+ *
14
+ * Defaults come from the foundation tokens (`font.family`), so out of the box
15
+ * native asks for the same faces the design system names. A consumer that has
16
+ * not loaded those fonts sees the platform fallback (plus a dev warning on
17
+ * iOS) — load them with `expo-font` or native assets, or opt out:
18
+ *
19
+ * - `fontFamily="system"` — platform fonts everywhere, no families applied.
20
+ * - `fontFamily={{ mono: 'JetBrainsMono' }}` — override one role, keep the
21
+ * token defaults for the rest.
22
+ * - `fontFamily={{ body: null }}` — disable one role only.
23
+ *
24
+ * Kept as a leaf module with no `react-native` value import so it stays
25
+ * testable under plain vitest — the same constraint as `theme/breakpoint.ts`.
26
+ */
27
+
28
+ /** One resolved family per role; `null` means "leave the platform font". */
29
+
30
+ /** What `BlendNativeProvider` accepts for its `fontFamily` prop. */
31
+
32
+ const ROLES = ['display', 'body', 'heading', 'mono'];
33
+
34
+ /**
35
+ * Resolve the provider's `fontFamily` option against the active foundation
36
+ * tokens. Pure; called once per provider render.
37
+ */
38
+ export function resolveFontFamilies(foundationTokens = FOUNDATION_THEME, option) {
39
+ const resolved = {};
40
+ for (const role of ROLES) {
41
+ if (option === 'system') {
42
+ resolved[role] = null;
43
+ continue;
44
+ }
45
+ const override = option?.[role];
46
+ if (override !== undefined) {
47
+ resolved[role] = override;
48
+ continue;
49
+ }
50
+ const token = foundationTokens.font?.family?.[role];
51
+ resolved[role] = token !== undefined ? String(token) : null;
52
+ }
53
+ return resolved;
54
+ }
55
+ //# sourceMappingURL=fonts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FOUNDATION_THEME","ROLES","resolveFontFamilies","foundationTokens","option","resolved","role","override","undefined","token","font","family","String"],"sourceRoot":"../../../src","sources":["theme/fonts.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,kCAAkC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;;AAGA;;AAKA,MAAMC,KAAuB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;;AAEtE;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAC/BC,gBAAyC,GAAGH,gBAAgB,EAC5DI,MAA+B,EACb;EAClB,MAAMC,QAAQ,GAAG,CAAC,CAAuB;EAEzC,KAAK,MAAMC,IAAI,IAAIL,KAAK,EAAE;IACtB,IAAIG,MAAM,KAAK,QAAQ,EAAE;MACrBC,QAAQ,CAACC,IAAI,CAAC,GAAG,IAAI;MACrB;IACJ;IACA,MAAMC,QAAQ,GAAGH,MAAM,GAAGE,IAAI,CAAC;IAC/B,IAAIC,QAAQ,KAAKC,SAAS,EAAE;MACxBH,QAAQ,CAACC,IAAI,CAAC,GAAGC,QAAQ;MACzB;IACJ;IACA,MAAME,KAAK,GAAGN,gBAAgB,CAACO,IAAI,EAAEC,MAAM,GAAGL,IAAI,CAAC;IACnDD,QAAQ,CAACC,IAAI,CAAC,GAAGG,KAAK,KAAKD,SAAS,GAAGI,MAAM,CAACH,KAAK,CAAC,GAAG,IAAI;EAC/D;EAEA,OAAOJ,QAAQ;AACnB","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ import { getAlertV2Tokens, getButtonV2Tokens, getSkeletonTokens, getTagV2Tokens, getTextInputV2Tokens } from '@juspay/blend-design-system/node';
4
+
5
+ /**
6
+ * Slot name → token factory.
7
+ *
8
+ * **This is the only file to edit when adding a component.** Web needs three
9
+ * files changed in lockstep for a new token slot (`context/ThemeContext.tsx`
10
+ * for the type + default, `context/initComponentTokens.ts` for the `??`
11
+ * fallback, `context/useComponentToken.ts` for the union and `switch` case) —
12
+ * and missing one throws at runtime. Native collapses that to a single
13
+ * registry entry, with the slot union derived from the object rather than
14
+ * hand-maintained alongside it.
15
+ *
16
+ * Factories come from `@juspay/blend-design-system/node`, the React-free
17
+ * entry, so registering one pulls in no UI code.
18
+ */
19
+ export const NATIVE_TOKEN_REGISTRY = {
20
+ ALERTV2: getAlertV2Tokens,
21
+ BUTTONV2: getButtonV2Tokens,
22
+ SKELETON: getSkeletonTokens,
23
+ TAGV2: getTagV2Tokens,
24
+ TEXT_INPUTV2: getTextInputV2Tokens
25
+ };
26
+
27
+ /** Every component slot native can resolve. Derived, never hand-written. */
28
+
29
+ /**
30
+ * A Blend token factory: pure, takes foundation tokens plus a theme, and
31
+ * returns one token object per breakpoint.
32
+ */
33
+
34
+ /** Overrides accepted by `BlendNativeProvider`, keyed by slot. */
35
+
36
+ export const NATIVE_TOKEN_SLOTS = Object.keys(NATIVE_TOKEN_REGISTRY);
37
+ export function isNativeTokenSlot(value) {
38
+ return Object.prototype.hasOwnProperty.call(NATIVE_TOKEN_REGISTRY, value);
39
+ }
40
+ //# sourceMappingURL=nativeTokenRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getAlertV2Tokens","getButtonV2Tokens","getSkeletonTokens","getTagV2Tokens","getTextInputV2Tokens","NATIVE_TOKEN_REGISTRY","ALERTV2","BUTTONV2","SKELETON","TAGV2","TEXT_INPUTV2","NATIVE_TOKEN_SLOTS","Object","keys","isNativeTokenSlot","value","prototype","hasOwnProperty","call"],"sourceRoot":"../../../src","sources":["theme/nativeTokenRegistry.ts"],"mappings":";;AAAA,SAGIA,gBAAgB,EAChBC,iBAAiB,EACjBC,iBAAiB,EACjBC,cAAc,EACdC,oBAAoB,QAEjB,kCAAkC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAG;EACjCC,OAAO,EAAEN,gBAAgB;EACzBO,QAAQ,EAAEN,iBAAiB;EAC3BO,QAAQ,EAAEN,iBAAiB;EAC3BO,KAAK,EAAEN,cAAc;EACrBO,YAAY,EAAEN;AAClB,CAAU;;AAEV;;AAGA;AACA;AACA;AACA;;AAMA;;AAKA,OAAO,MAAMO,kBAAkB,GAAGC,MAAM,CAACC,IAAI,CACzCR,qBACJ,CAAsB;AAEtB,OAAO,SAASS,iBAAiBA,CAACC,KAAa,EAA4B;EACvE,OAAOH,MAAM,CAACI,SAAS,CAACC,cAAc,CAACC,IAAI,CAACb,qBAAqB,EAAEU,KAAK,CAAC;AAC7E","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ import { Theme } from '@juspay/blend-design-system/node';
4
+
5
+ /**
6
+ * `theme="system"` resolution.
7
+ *
8
+ * The provider accepts the sentinel and resolves it against the OS appearance
9
+ * (`useColorScheme`) before the value enters context, so token resolution and
10
+ * every consumer below only ever see a concrete theme.
11
+ *
12
+ * Kept as a leaf module with no `react-native` value import so the mapping is
13
+ * testable under plain vitest; the provider owns the `useColorScheme`
14
+ * subscription.
15
+ */
16
+
17
+ /** Pass as `theme` to follow the OS light/dark setting. */
18
+ export const SYSTEM_THEME = 'system';
19
+ /**
20
+ * Resolve a theme setting to a concrete theme.
21
+ *
22
+ * `colorScheme` is `useColorScheme()`'s value. Typed as `string` rather than
23
+ * a literal union because RN's `ColorSchemeName` has grown values across
24
+ * versions (`'unspecified'` on some platforms) — anything that is not
25
+ * `'dark'` resolves light, matching the provider's default.
26
+ */
27
+ export function resolveThemeSetting(theme, colorScheme) {
28
+ if (theme !== SYSTEM_THEME) return theme;
29
+ return colorScheme === 'dark' ? Theme.DARK : Theme.LIGHT;
30
+ }
31
+ //# sourceMappingURL=systemTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Theme","SYSTEM_THEME","resolveThemeSetting","theme","colorScheme","DARK","LIGHT"],"sourceRoot":"../../../src","sources":["theme/systemTheme.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,kCAAkC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,MAAMC,YAAY,GAAG,QAAiB;AAI7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAC/BC,KAAyB,EACzBC,WAAsC,EACxB;EACd,IAAID,KAAK,KAAKF,YAAY,EAAE,OAAOE,KAAK;EACxC,OAAOC,WAAW,KAAK,MAAM,GAAGJ,KAAK,CAACK,IAAI,GAAGL,KAAK,CAACM,KAAK;AAC5D","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ import { useWindowDimensions } from 'react-native';
4
+ import { BREAKPOINTS } from '@juspay/blend-design-system/node';
5
+ import { resolveBreakpoint } from "./breakpoint.js";
6
+ export { resolveBreakpoint };
7
+ /**
8
+ * The active breakpoint for the current RN viewport.
9
+ *
10
+ * `useWindowDimensions` is RN's equivalent of web's resize listener — it
11
+ * re-renders on rotation, split-screen, and foldable unfold. The previous
12
+ * implementation hardcoded `'sm'` on the assumption that native is
13
+ * phone-only, which silently gave tablets and landscape the wrong tokens.
14
+ *
15
+ * The width→label mapping itself lives in `./breakpoint`, which imports
16
+ * nothing from `react-native` and is therefore unit-testable.
17
+ */
18
+ export function useNativeBreakpoint(breakpoints = BREAKPOINTS) {
19
+ const {
20
+ width
21
+ } = useWindowDimensions();
22
+ return resolveBreakpoint(width, breakpoints);
23
+ }
24
+ //# sourceMappingURL=useNativeBreakpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useWindowDimensions","BREAKPOINTS","resolveBreakpoint","useNativeBreakpoint","breakpoints","width"],"sourceRoot":"../../../src","sources":["theme/useNativeBreakpoint.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,cAAc;AAClD,SACIC,WAAW,QAER,kCAAkC;AACzC,SAASC,iBAAiB,QAA+B,iBAAc;AAEvE,SAASA,iBAAiB;AAG1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAC/BC,WAA2B,GAAGH,WAAW,EACzB;EAChB,MAAM;IAAEI;EAAM,CAAC,GAAGL,mBAAmB,CAAC,CAAC;EACvC,OAAOE,iBAAiB,CAACG,KAAK,EAAED,WAAW,CAAC;AAChD","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ import { useContext, useMemo } from 'react';
4
+ import { mergeTokenTree } from '@juspay/blend-design-system/node';
5
+ import { BlendNativeThemeContext } from "./BlendNativeProvider.js";
6
+ import { NATIVE_TOKEN_REGISTRY, NATIVE_TOKEN_SLOTS, isNativeTokenSlot } from "./nativeTokenRegistry.js";
7
+ import { useNativeBreakpoint } from "./useNativeBreakpoint.js";
8
+
9
+ /**
10
+ * Resolve one component's tokens, flattened for the active breakpoint and
11
+ * with any provider overrides deep-merged in.
12
+ *
13
+ * The native counterpart of web's `useResponsiveTokens('BUTTONV2')`, and
14
+ * deliberately the same call shape so component code reads the same on both
15
+ * platforms.
16
+ *
17
+ * Note `mergeTokenTree` is imported from the web package rather than
18
+ * reimplemented — override semantics (plain objects merge key-by-key,
19
+ * everything else replaces, `undefined` is skipped) must not drift between
20
+ * web and native.
21
+ */
22
+
23
+ /** Resolution cache, keyed the way web's `initTokens` keys its own. */
24
+ const resolutionCache = new WeakMap();
25
+ function resolveResponsive(slot, foundationTokens, theme, overrides) {
26
+ let byKey = resolutionCache.get(foundationTokens);
27
+ if (!byKey) {
28
+ byKey = new Map();
29
+ resolutionCache.set(foundationTokens, byKey);
30
+ }
31
+
32
+ // Overrides participate in the key by identity — they are expected to be
33
+ // a stable object from the consumer, exactly as on web.
34
+ const hasOverride = overrides !== undefined;
35
+ const cacheKey = `${slot}::${String(theme)}::${hasOverride ? 'o' : '-'}`;
36
+ if (!hasOverride) {
37
+ const cached = byKey.get(cacheKey);
38
+ if (cached) return cached;
39
+ }
40
+ const factory = NATIVE_TOKEN_REGISTRY[slot];
41
+ const responsive = factory(foundationTokens, theme);
42
+ const resolved = hasOverride ? mergeTokenTree(responsive, overrides) : responsive;
43
+ if (!hasOverride) byKey.set(cacheKey, resolved);
44
+ return resolved;
45
+ }
46
+ export function useNativeTokens(slot) {
47
+ const {
48
+ theme,
49
+ componentTokens,
50
+ foundationTokens,
51
+ breakpoints
52
+ } = useContext(BlendNativeThemeContext);
53
+ // The provider's `breakpoints` must reach the resolver — calling
54
+ // `useNativeBreakpoint()` bare silently ignores a consumer's override
55
+ // and resolves against the defaults.
56
+ const breakpoint = useNativeBreakpoint(breakpoints);
57
+ if (!isNativeTokenSlot(slot)) {
58
+ throw new Error(`[blend-native] Unknown component token slot "${slot}". ` + `Known slots: ${NATIVE_TOKEN_SLOTS.join(', ')}. ` + `Register new components in src/theme/nativeTokenRegistry.ts.`);
59
+ }
60
+ const overrides = componentTokens?.[slot];
61
+ return useMemo(() => {
62
+ const responsive = resolveResponsive(slot, foundationTokens, theme, overrides);
63
+ return responsive[breakpoint];
64
+ }, [slot, foundationTokens, theme, overrides, breakpoint]);
65
+ }
66
+ export default useNativeTokens;
67
+ //# sourceMappingURL=useNativeTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useContext","useMemo","mergeTokenTree","BlendNativeThemeContext","NATIVE_TOKEN_REGISTRY","NATIVE_TOKEN_SLOTS","isNativeTokenSlot","useNativeBreakpoint","resolutionCache","WeakMap","resolveResponsive","slot","foundationTokens","theme","overrides","byKey","get","Map","set","hasOverride","undefined","cacheKey","String","cached","factory","responsive","resolved","useNativeTokens","componentTokens","breakpoints","breakpoint","Error","join"],"sourceRoot":"../../../src","sources":["theme/useNativeTokens.ts"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAC3C,SAGIC,cAAc,QAEX,kCAAkC;AACzC,SAASC,uBAAuB,QAAQ,0BAAuB;AAC/D,SACIC,qBAAqB,EACrBC,kBAAkB,EAClBC,iBAAiB,QAGd,0BAAuB;AAC9B,SAASC,mBAAmB,QAAQ,0BAAuB;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAMC,eAAe,GAAG,IAAIC,OAAO,CAGjC,CAAC;AAEH,SAASC,iBAAiBA,CACtBC,IAAqB,EACrBC,gBAAyC,EACzCC,KAAqB,EACrBC,SAAkB,EACmB;EACrC,IAAIC,KAAK,GAAGP,eAAe,CAACQ,GAAG,CAACJ,gBAAgB,CAAC;EACjD,IAAI,CAACG,KAAK,EAAE;IACRA,KAAK,GAAG,IAAIE,GAAG,CAAC,CAAC;IACjBT,eAAe,CAACU,GAAG,CAACN,gBAAgB,EAAEG,KAAK,CAAC;EAChD;;EAEA;EACA;EACA,MAAMI,WAAW,GAAGL,SAAS,KAAKM,SAAS;EAC3C,MAAMC,QAAQ,GAAG,GAAGV,IAAI,KAAKW,MAAM,CAACT,KAAK,CAAC,KAAKM,WAAW,GAAG,GAAG,GAAG,GAAG,EAAE;EAExE,IAAI,CAACA,WAAW,EAAE;IACd,MAAMI,MAAM,GAAGR,KAAK,CAACC,GAAG,CAACK,QAAQ,CAAC;IAClC,IAAIE,MAAM,EAAE,OAAOA,MAAM;EAC7B;EAEA,MAAMC,OAAO,GAAGpB,qBAAqB,CAACO,IAAI,CAA0B;EACpE,MAAMc,UAAU,GAAGD,OAAO,CAACZ,gBAAgB,EAAEC,KAAK,CAAC;EACnD,MAAMa,QAAQ,GACVP,WAAW,GAAGjB,cAAc,CAACuB,UAAU,EAAEX,SAAS,CAAC,GAAGW,UAChB;EAE1C,IAAI,CAACN,WAAW,EAAEJ,KAAK,CAACG,GAAG,CAACG,QAAQ,EAAEK,QAAQ,CAAC;EAC/C,OAAOA,QAAQ;AACnB;AAEA,OAAO,SAASC,eAAeA,CAAIhB,IAAqB,EAAK;EACzD,MAAM;IAAEE,KAAK;IAAEe,eAAe;IAAEhB,gBAAgB;IAAEiB;EAAY,CAAC,GAC3D7B,UAAU,CAACG,uBAAuB,CAAC;EACvC;EACA;EACA;EACA,MAAM2B,UAAU,GAAGvB,mBAAmB,CAACsB,WAAW,CAAC;EAEnD,IAAI,CAACvB,iBAAiB,CAACK,IAAI,CAAC,EAAE;IAC1B,MAAM,IAAIoB,KAAK,CACX,gDAAgDpB,IAAI,KAAK,GACrD,gBAAgBN,kBAAkB,CAAC2B,IAAI,CAAC,IAAI,CAAC,IAAI,GACjD,8DACR,CAAC;EACL;EAEA,MAAMlB,SAAS,GAAGc,eAAe,GAAGjB,IAAI,CAAC;EAEzC,OAAOV,OAAO,CAAC,MAAM;IACjB,MAAMwB,UAAU,GAAGf,iBAAiB,CAChCC,IAAI,EACJC,gBAAgB,EAChBC,KAAK,EACLC,SACJ,CAAC;IACD,OAAOW,UAAU,CAACK,UAAU,CAAC;EACjC,CAAC,EAAE,CAACnB,IAAI,EAAEC,gBAAgB,EAAEC,KAAK,EAAEC,SAAS,EAAEgB,UAAU,CAAC,CAAC;AAC9D;AAEA,eAAeH,eAAe","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Live-region message construction.
3
+ *
4
+ * Kept RN-free so it stays unit-testable outside a renderer — the same split
5
+ * as `theme/breakpoint.ts` and `primitives/touchTarget.ts`.
6
+ */
7
+ /**
8
+ * Compose the sentence a screen reader should announce for a status surface.
9
+ *
10
+ * Web relies on `aria-atomic="true"` to have the whole region re-read when any
11
+ * part changes, so the announcement is heading and description together. iOS
12
+ * has no live-region concept at all and must be told the exact string, so it
13
+ * is built here rather than left to the platform.
14
+ *
15
+ * Returns `undefined` when there is nothing worth announcing, so callers can
16
+ * skip the announcement entirely instead of interrupting the user with silence.
17
+ *
18
+ * ```
19
+ * buildAnnouncement('Saved', 'Your changes are live') -> 'Saved. Your changes are live'
20
+ * buildAnnouncement('Saved', undefined) -> 'Saved'
21
+ * buildAnnouncement(undefined, 'Your changes are live')-> 'Your changes are live'
22
+ * buildAnnouncement(undefined, undefined) -> undefined
23
+ * ```
24
+ */
25
+ export declare function buildAnnouncement(heading?: string, description?: string): string | undefined;
26
+ //# sourceMappingURL=announcement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcement.d.ts","sourceRoot":"","sources":["../../../../src/a11y/announcement.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC7B,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACrB,MAAM,GAAG,SAAS,CAYpB"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Announce a status message to assistive tech.
3
+ *
4
+ * Web expresses this declaratively with `aria-live` + `aria-atomic`. React
5
+ * Native splits it across platforms:
6
+ *
7
+ * - **Android** understands `accessibilityLiveRegion` on the view itself, so
8
+ * callers set that prop directly and this hook stays out of the way.
9
+ * - **iOS** has no live-region support. The only route is to hand the exact
10
+ * string to `announceForAccessibility`, which is what this does.
11
+ *
12
+ * Re-announces when the message changes, and skips repeats of the same string
13
+ * so a parent re-render does not interrupt the user twice with the same text.
14
+ */
15
+ export declare function useLiveRegionAnnounce(message: string | undefined, enabled?: boolean): void;
16
+ export default useLiveRegionAnnounce;
17
+ //# sourceMappingURL=useLiveRegion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLiveRegion.d.ts","sourceRoot":"","sources":["../../../../src/a11y/useLiveRegion.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,UAAO,GACf,IAAI,CAaN;AAED,eAAe,qBAAqB,CAAA"}