@octane-xplat/ui 0.6.0 → 0.7.1

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 (773) hide show
  1. package/README.md +14 -4
  2. package/dist/native/{Absolute.native.tsrx.js → Absolute.tsrx.js} +2 -2
  3. package/dist/native/{Accordion.native.tsrx.js → Accordion.tsrx.js} +3 -3
  4. package/dist/native/{ActivityIndicator.native.tsrx.js → ActivityIndicator.tsrx.js} +2 -2
  5. package/dist/native/{Alert.native.tsrx.js → Alert.tsrx.js} +3 -3
  6. package/dist/native/{Avatar.native.tsrx.js → Avatar.tsrx.js} +3 -3
  7. package/dist/native/{AvatarGroup.native.tsrx.js → AvatarGroup.tsrx.js} +3 -3
  8. package/dist/native/{Badge.native.tsrx.js → Badge.tsrx.js} +2 -2
  9. package/dist/native/{Banner.native.tsrx.js → Banner.tsrx.js} +3 -3
  10. package/dist/native/{Breadcrumb.native.tsrx.js → Breadcrumb.tsrx.js} +2 -2
  11. package/dist/native/{Button.native.tsrx.js → Button.tsrx.js} +3 -3
  12. package/dist/native/{Card.native.tsrx.js → Card.tsrx.js} +2 -2
  13. package/dist/native/{Checkbox.native.tsrx.js → Checkbox.tsrx.js} +2 -2
  14. package/dist/native/{CheckboxGroup.native.tsrx.js → CheckboxGroup.tsrx.js} +3 -3
  15. package/dist/native/{Chip.native.tsrx.js → Chip.tsrx.js} +2 -2
  16. package/dist/native/{Collapsible.native.tsrx.js → Collapsible.tsrx.js} +3 -3
  17. package/dist/native/{CommandPalette.native.tsrx.js → CommandPalette.tsrx.js} +4 -4
  18. package/dist/native/{ContextMenu.native.tsrx.js → ContextMenu.tsrx.js} +4 -4
  19. package/dist/native/{Drawer.native.tsrx.js → Drawer.tsrx.js} +2 -2
  20. package/dist/native/{DropdownMenu.native.tsrx.js → DropdownMenu.tsrx.js} +5 -5
  21. package/dist/native/{Empty.native.tsrx.js → Empty.tsrx.js} +3 -3
  22. package/dist/native/{FieldGroup.native.tsrx.js → FieldGroup.tsrx.js} +2 -2
  23. package/dist/native/{FormField.native.tsrx.js → FormField.tsrx.js} +2 -2
  24. package/dist/native/{Grid.native.tsrx.js → Grid.tsrx.js} +2 -2
  25. package/dist/native/{Heading.native.tsrx.js → Heading.tsrx.js} +3 -3
  26. package/dist/native/Hoverable.tsrx.js +139 -0
  27. package/dist/native/{Icon.native.tsrx.js → Icon.tsrx.js} +3 -3
  28. package/dist/native/{Image.native.tsrx.js → Image.tsrx.js} +4 -4
  29. package/dist/native/{InputNumber.native.tsrx.js → InputNumber.tsrx.js} +4 -4
  30. package/dist/native/{InputRating.native.tsrx.js → InputRating.tsrx.js} +3 -3
  31. package/dist/native/{InputTags.native.tsrx.js → InputTags.tsrx.js} +4 -4
  32. package/dist/native/{Kbd.native.tsrx.js → Kbd.tsrx.js} +2 -2
  33. package/dist/native/{KeyboardAvoiding.native.tsrx.js → KeyboardAvoiding.mobile.tsrx.js} +5 -3
  34. package/dist/native/{Link.native.tsrx.js → Link.tsrx.js} +2 -2
  35. package/dist/native/ListItem.tsrx.js +178 -0
  36. package/dist/native/Meter.tsrx.js +70 -0
  37. package/dist/native/{NavLink.native.tsrx.js → NavLink.tsrx.js} +3 -3
  38. package/dist/native/{NavigationMenu.native.tsrx.js → NavigationMenu.tsrx.js} +3 -3
  39. package/dist/native/{Overlay.native.tsrx.js → Overlay.tsrx.js} +2 -2
  40. package/dist/native/{Pagination.native.tsrx.js → Pagination.tsrx.js} +2 -2
  41. package/dist/native/{PinInput.native.tsrx.js → PinInput.tsrx.js} +3 -3
  42. package/dist/native/{Popover.native.tsrx.js → Popover.tsrx.js} +4 -4
  43. package/dist/native/{Pressable.native.tsrx.js → Pressable.tsrx.js} +4 -4
  44. package/dist/native/{ProgressGroup.native.tsrx.js → ProgressGroup.tsrx.js} +3 -3
  45. package/dist/native/{RadioGroup.native.tsrx.js → RadioGroup.tsrx.js} +2 -2
  46. package/dist/native/{RichText.native.tsrx.js → RichText.tsrx.js} +3 -3
  47. package/dist/native/{RouteHost.native.tsrx.js → RouteHost.mobile.tsrx.js} +13 -2
  48. package/dist/native/{Row.native.tsrx.js → Row.tsrx.js} +4 -4
  49. package/dist/native/{SafeArea.native.tsrx.js → SafeArea.tsrx.js} +9 -3
  50. package/dist/native/{Screen.native.tsrx.js → Screen.tsrx.js} +13 -5
  51. package/dist/native/{ScrollBox.native.tsrx.js → ScrollBox.tsrx.js} +2 -2
  52. package/dist/native/{ScrollView.native.tsrx.js → ScrollView.tsrx.js} +5 -5
  53. package/dist/native/{SearchInput.native.tsrx.js → SearchInput.tsrx.js} +4 -4
  54. package/dist/native/{SegmentedControl.native.tsrx.js → SegmentedControl.tsrx.js} +2 -2
  55. package/dist/native/{Select.native.tsrx.js → Select.tsrx.js} +4 -4
  56. package/dist/native/{Separator.native.tsrx.js → Separator.tsrx.js} +2 -2
  57. package/dist/native/{Sheet.native.tsrx.js → Sheet.tsrx.js} +11 -3
  58. package/dist/native/{Skeleton.native.tsrx.js → Skeleton.tsrx.js} +2 -2
  59. package/dist/native/{Slider.native.tsrx.js → Slider.tsrx.js} +5 -5
  60. package/dist/native/{Spacer.native.tsrx.js → Spacer.tsrx.js} +2 -2
  61. package/dist/native/{Stack.native.tsrx.js → Stack.tsrx.js} +2 -2
  62. package/dist/native/{Stepper.native.tsrx.js → Stepper.tsrx.js} +2 -2
  63. package/dist/native/{Switch.native.tsrx.js → Switch.tsrx.js} +2 -2
  64. package/dist/native/{Table.native.tsrx.js → Table.tsrx.js} +2 -2
  65. package/dist/native/{Tabs.native.tsrx.js → Tabs.tsrx.js} +8 -18
  66. package/dist/native/{Text.native.tsrx.js → Text.tsrx.js} +3 -3
  67. package/dist/native/{TextArea.native.tsrx.js → TextArea.tsrx.js} +3 -3
  68. package/dist/native/{TextInput.native.tsrx.js → TextInput.tsrx.js} +3 -3
  69. package/dist/native/{Timeline.native.tsrx.js → Timeline.tsrx.js} +3 -3
  70. package/dist/native/Tooltip.tsrx.js +131 -0
  71. package/dist/native/{Tree.native.tsrx.js → Tree.tsrx.js} +2 -2
  72. package/dist/native/{User.native.tsrx.js → User.tsrx.js} +3 -3
  73. package/dist/native/{View.native.tsrx.js → View.tsrx.js} +4 -4
  74. package/dist/native/VirtualList.tsrx.js +466 -0
  75. package/dist/native/{WebView.native.tsrx.js → WebView.tsrx.js} +31 -6
  76. package/dist/native/{aliases.native.tsrx.js → aliases.tsrx.js} +2 -2
  77. package/dist/native/android/BottomNavigationView.android.tsrx.js +72 -23
  78. package/dist/native/android/CircularProgressIndicator.android.tsrx.js +1 -1
  79. package/dist/native/android/DrawerLayout.android.tsrx.js +2 -1
  80. package/dist/native/android/MaterialDialog.android.tsrx.js +1 -1
  81. package/dist/native/android/MaterialSwitch.android.tsrx.js +1 -1
  82. package/dist/native/android/RecyclerView.android.tsrx.js +15 -3
  83. package/dist/native/android/SeekBar.android.tsrx.js +1 -1
  84. package/dist/native/android/icon.android.js +7 -0
  85. package/dist/native/android/index.js +3 -1
  86. package/dist/native/android/openModal.android.js +1 -1
  87. package/dist/native/{anim.native.tsrx.js → anim.tsrx.js} +1 -1
  88. package/dist/native/apply-native-modifiers.native.js +9 -0
  89. package/dist/native/{escape-props.native.js → escape-props.js} +3 -1
  90. package/dist/native/index.shared.js +92 -0
  91. package/dist/native/ios/LiquidGlass.ios.tsrx.js +2 -2
  92. package/dist/native/ios/LiquidGlassContainer.ios.tsrx.js +2 -2
  93. package/dist/native/ios/SideDrawer.ios.tsrx.js +2 -1
  94. package/dist/native/ios/UIActivityIndicatorView.ios.tsrx.js +1 -1
  95. package/dist/native/ios/UIModal.ios.tsrx.js +1 -1
  96. package/dist/native/ios/UISlider.ios.tsrx.js +1 -1
  97. package/dist/native/ios/UISwitch.ios.tsrx.js +1 -1
  98. package/dist/native/ios/UITabBar.ios.tsrx.js +33 -12
  99. package/dist/native/ios/UITableView.ios.tsrx.js +15 -3
  100. package/dist/native/ios/icon.ios.js +7 -0
  101. package/dist/native/ios/index.js +3 -1
  102. package/dist/native/ios/openModal.ios.js +1 -1
  103. package/dist/native/keyboard-inset.mobile.js +66 -0
  104. package/dist/native/{layout-child.native.js → layout-child.js} +1 -1
  105. package/dist/native/{modal-presenter.native.js → modal-presenter.mobile.js} +1 -1
  106. package/dist/native/modifier-factories.js +24 -0
  107. package/dist/native/native/index.js +3 -3
  108. package/dist/native/octane-client-build.json +1 -1
  109. package/dist/native/{pan.native.tsrx.js → pan.tsrx.js} +1 -1
  110. package/dist/native/{platform.native.js → platform.js} +3 -3
  111. package/dist/native/{platformProps.native.js → platformProps.js} +3 -1
  112. package/dist/native/{refresh.native.js → refresh.js} +1 -1
  113. package/dist/native/{root-layout.native.js → root-layout.mobile.js} +2 -2
  114. package/dist/native/route-host.mobile.js +2 -0
  115. package/dist/native/route-table.js +105 -4
  116. package/dist/native/{route.native.js → route.js} +49 -13
  117. package/dist/native/safeAreaInsets.tsrx.js +67 -0
  118. package/dist/native/shared.js +93 -0
  119. package/dist/native/{sheet-detents.native.js → sheet-detents.js} +1 -1
  120. package/dist/native/{sheet-service.native.js → sheet-service.js} +9 -3
  121. package/dist/native/{stacks.native.js → stacks.js} +1 -1
  122. package/dist/native/{styled.native.tsrx.js → styled.tsrx.js} +1 -1
  123. package/dist/native/{svg.native.js → svg.mobile.js} +2 -2
  124. package/dist/native/tap-to-blur.mobile.js +94 -0
  125. package/dist/native/{text-write.native.js → text-write.js} +1 -1
  126. package/dist/native/theme/{colorScheme.native.js → colorScheme.js} +2 -2
  127. package/dist/native/theme/{status-bar-scheme.native.js → status-bar-scheme.mobile.js} +1 -1
  128. package/dist/native/theme/theme-scheme.js +2 -2
  129. package/dist/native/{toast-anchor.native.tsrx.js → toast-anchor.tsrx.js} +3 -3
  130. package/dist/native/{translate.native.js → translate.js} +1 -1
  131. package/dist/native/ui.js +92 -90
  132. package/dist/native/{use-back.native.tsrx.js → use-back.tsrx.js} +2 -2
  133. package/dist/native/{use-store.native.tsrx.js → use-store.tsrx.js} +1 -1
  134. package/dist/native/{useMeasure.native.tsrx.js → useMeasure.tsrx.js} +1 -1
  135. package/dist/native/vendor/ui-svg/index.android.js +137 -0
  136. package/dist/native/vendor/ui-svg/index.common.js +10 -0
  137. package/dist/native/vendor/ui-svg/index.ios.js +111 -0
  138. package/dist/native/virtual-list-layout.js +146 -0
  139. package/dist/native/{windows.native.js → windows.js} +1 -1
  140. package/dist/web/{web/Hoverable.web.tsrx.js → Hoverable.web.tsrx.js} +7 -6
  141. package/dist/web/ListItem.web.tsrx.js +139 -0
  142. package/dist/web/SafeArea.web.tsrx.js +9 -3
  143. package/dist/web/Tabs.web.tsrx.js +88 -44
  144. package/dist/web/{web/Tooltip.web.tsrx.js → Tooltip.web.tsrx.js} +7 -6
  145. package/dist/web/VirtualList.web.tsrx.js +622 -0
  146. package/dist/web/WebView.web.tsrx.js +42 -5
  147. package/dist/web/octane-client-build.json +1 -1
  148. package/dist/web/platform.web.js +1 -1
  149. package/dist/web/route-table.js +105 -4
  150. package/dist/web/route.web.js +36 -11
  151. package/dist/web/ui.js +9 -8
  152. package/dist/web/virtual-list-layout.js +146 -0
  153. package/dist/web/web/index.js +2 -2
  154. package/package.json +51 -23
  155. package/platforms/android/include.gradle +8 -0
  156. package/platforms/android/native-api-usage.json +8 -0
  157. package/platforms/ios/Podfile +2 -0
  158. package/src/Absolute.tsrx +22 -0
  159. package/src/Absolute.web.tsrx +22 -0
  160. package/src/Accordion.macos.tsrx +50 -0
  161. package/src/Accordion.tsrx +50 -0
  162. package/src/Accordion.web.tsrx +43 -0
  163. package/src/ActivityIndicator.tsrx +29 -0
  164. package/src/ActivityIndicator.web.tsrx +14 -0
  165. package/src/Alert.macos.tsrx +42 -0
  166. package/src/Alert.tsrx +24 -0
  167. package/src/Alert.web.tsrx +23 -0
  168. package/src/Avatar.macos.tsrx +25 -0
  169. package/src/Avatar.tsrx +25 -0
  170. package/src/Avatar.web.tsrx +24 -0
  171. package/src/AvatarGroup.macos.tsrx +32 -0
  172. package/src/AvatarGroup.tsrx +32 -0
  173. package/src/AvatarGroup.web.tsrx +29 -0
  174. package/src/Badge.macos.tsrx +12 -0
  175. package/src/Badge.tsrx +12 -0
  176. package/src/Badge.web.tsrx +10 -0
  177. package/src/Banner.macos.tsrx +20 -0
  178. package/src/Banner.tsrx +20 -0
  179. package/src/Banner.web.tsrx +20 -0
  180. package/src/Breadcrumb.macos.tsrx +27 -0
  181. package/src/Breadcrumb.tsrx +27 -0
  182. package/src/Breadcrumb.web.tsrx +25 -0
  183. package/src/Button.tsrx +23 -0
  184. package/src/Button.web.tsrx +21 -0
  185. package/src/CameraView.macos.tsrx +6 -0
  186. package/src/Card.macos.tsrx +13 -0
  187. package/src/Card.tsrx +13 -0
  188. package/src/Card.web.tsrx +11 -0
  189. package/src/Checkbox.tsrx +23 -0
  190. package/src/Checkbox.web.tsrx +34 -0
  191. package/src/CheckboxGroup.macos.tsrx +39 -0
  192. package/src/CheckboxGroup.tsrx +39 -0
  193. package/src/CheckboxGroup.web.tsrx +38 -0
  194. package/src/Chip.macos.tsrx +25 -0
  195. package/src/Chip.tsrx +25 -0
  196. package/src/Chip.web.tsrx +25 -0
  197. package/src/Collapsible.macos.tsrx +39 -0
  198. package/src/Collapsible.tsrx +39 -0
  199. package/src/Collapsible.web.tsrx +33 -0
  200. package/src/CommandPalette.macos.tsrx +58 -0
  201. package/src/CommandPalette.tsrx +58 -0
  202. package/src/CommandPalette.web.tsrx +59 -0
  203. package/src/ContextMenu.macos.tsrx +59 -0
  204. package/src/ContextMenu.tsrx +59 -0
  205. package/src/ContextMenu.web.tsrx +69 -0
  206. package/src/Drawer.macos.tsrx +28 -0
  207. package/src/Drawer.tsrx +25 -0
  208. package/src/Drawer.web.tsrx +31 -0
  209. package/src/DropdownMenu.macos.tsrx +63 -0
  210. package/src/DropdownMenu.tsrx +63 -0
  211. package/src/DropdownMenu.web.tsrx +78 -0
  212. package/src/Empty.macos.tsrx +15 -0
  213. package/src/Empty.tsrx +15 -0
  214. package/src/Empty.web.tsrx +13 -0
  215. package/src/FieldGroup.macos.tsrx +17 -0
  216. package/src/FieldGroup.tsrx +17 -0
  217. package/src/FieldGroup.web.tsrx +17 -0
  218. package/src/FormField.macos.tsrx +25 -0
  219. package/src/FormField.tsrx +25 -0
  220. package/src/FormField.web.tsrx +24 -0
  221. package/src/Grid.tsrx +32 -0
  222. package/src/Grid.web.tsrx +43 -0
  223. package/src/Heading.macos.tsrx +8 -0
  224. package/src/Heading.tsrx +17 -0
  225. package/src/Heading.web.tsrx +15 -0
  226. package/src/Hoverable.mobile.tsrx +21 -0
  227. package/src/Hoverable.tsrx +113 -0
  228. package/src/Hoverable.web.tsrx +98 -0
  229. package/src/Icon.macos.tsrx +18 -0
  230. package/src/Icon.tsrx +65 -0
  231. package/src/Icon.web.tsrx +75 -0
  232. package/src/Image.macos.tsrx +12 -0
  233. package/src/Image.tsrx +51 -0
  234. package/src/Image.web.tsrx +14 -0
  235. package/src/InputNumber.macos.tsrx +49 -0
  236. package/src/InputNumber.tsrx +49 -0
  237. package/src/InputNumber.web.tsrx +47 -0
  238. package/src/InputRating.macos.tsrx +42 -0
  239. package/src/InputRating.tsrx +39 -0
  240. package/src/InputRating.web.tsrx +52 -0
  241. package/src/InputTags.macos.tsrx +49 -0
  242. package/src/InputTags.tsrx +49 -0
  243. package/src/InputTags.web.tsrx +49 -0
  244. package/src/Kbd.macos.tsrx +11 -0
  245. package/src/Kbd.tsrx +11 -0
  246. package/src/Kbd.web.tsrx +9 -0
  247. package/src/KeyboardAvoiding.macos.tsrx +8 -0
  248. package/src/KeyboardAvoiding.mobile.tsrx +63 -0
  249. package/src/Link.macos.tsrx +15 -0
  250. package/src/Link.tsrx +10 -0
  251. package/src/Link.web.tsrx +12 -0
  252. package/src/ListItem.macos.tsrx +52 -0
  253. package/src/ListItem.tsrx +52 -0
  254. package/src/ListItem.web.tsrx +50 -0
  255. package/src/Meter.macos.tsrx +8 -0
  256. package/src/Meter.tsrx +45 -0
  257. package/src/Meter.web.tsrx +32 -0
  258. package/src/NavLink.macos.tsrx +24 -0
  259. package/src/NavLink.tsrx +22 -0
  260. package/src/NavLink.web.tsrx +23 -0
  261. package/src/NavigationMenu.macos.tsrx +31 -0
  262. package/src/NavigationMenu.tsrx +28 -0
  263. package/src/NavigationMenu.web.tsrx +31 -0
  264. package/src/Overlay.macos.tsrx +11 -0
  265. package/src/Overlay.tsrx +84 -0
  266. package/src/Overlay.web.tsrx +23 -0
  267. package/src/Pagination.macos.tsrx +54 -0
  268. package/src/Pagination.tsrx +47 -0
  269. package/src/Pagination.web.tsrx +50 -0
  270. package/src/PinInput.macos.tsrx +46 -0
  271. package/src/PinInput.tsrx +46 -0
  272. package/src/PinInput.web.tsrx +45 -0
  273. package/src/Popover.macos.tsrx +11 -0
  274. package/src/Popover.tsrx +157 -0
  275. package/src/Popover.web.tsrx +109 -0
  276. package/src/Pressable.macos.tsrx +19 -0
  277. package/src/Pressable.tsrx +37 -0
  278. package/src/Pressable.web.tsrx +45 -0
  279. package/src/ProgressGroup.macos.tsrx +17 -0
  280. package/src/ProgressGroup.tsrx +17 -0
  281. package/src/ProgressGroup.web.tsrx +15 -0
  282. package/src/RadioGroup.macos.tsrx +50 -0
  283. package/src/RadioGroup.tsrx +34 -0
  284. package/src/RadioGroup.web.tsrx +43 -0
  285. package/src/RichText.tsrx +40 -0
  286. package/src/RichText.web.tsrx +24 -0
  287. package/src/RouteHost.macos.tsrx +18 -0
  288. package/src/RouteHost.mobile.tsrx +44 -0
  289. package/src/Row.macos.tsrx +26 -0
  290. package/src/Row.tsrx +27 -0
  291. package/src/Row.web.tsrx +27 -0
  292. package/src/SafeArea.macos.tsrx +8 -0
  293. package/src/SafeArea.tsrx +20 -0
  294. package/src/SafeArea.web.tsrx +24 -0
  295. package/src/Screen.macos.tsrx +14 -0
  296. package/src/Screen.tsrx +31 -0
  297. package/src/Screen.web.tsrx +7 -0
  298. package/src/ScrollBox.tsrx +8 -0
  299. package/src/ScrollBox.web.tsrx +7 -0
  300. package/src/ScrollView.macos.tsrx +19 -0
  301. package/src/ScrollView.tsrx +117 -0
  302. package/src/ScrollView.web.tsrx +109 -0
  303. package/src/SearchInput.tsrx +60 -0
  304. package/src/SearchInput.web.test.tsrx +58 -0
  305. package/src/SearchInput.web.tsrx +55 -0
  306. package/src/SegmentedControl.tsrx +43 -0
  307. package/src/SegmentedControl.web.test.tsrx +46 -0
  308. package/src/SegmentedControl.web.tsrx +51 -0
  309. package/src/Select.macos.tsrx +104 -0
  310. package/src/Select.tsrx +104 -0
  311. package/src/Select.web.tsrx +124 -0
  312. package/src/Separator.macos.tsrx +17 -0
  313. package/src/Separator.tsrx +17 -0
  314. package/src/Separator.web.tsrx +17 -0
  315. package/src/Sheet.macos.tsrx +15 -0
  316. package/src/Sheet.tsrx +122 -0
  317. package/src/Sheet.web.tsrx +56 -0
  318. package/src/Skeleton.macos.tsrx +15 -0
  319. package/src/Skeleton.tsrx +15 -0
  320. package/src/Skeleton.web.tsrx +15 -0
  321. package/src/Slider.tsrx +71 -0
  322. package/src/Slider.web.tsrx +60 -0
  323. package/src/Spacer.tsrx +8 -0
  324. package/src/Spacer.web.tsrx +6 -0
  325. package/src/Stack.tsrx +24 -0
  326. package/src/Stack.web.tsrx +22 -0
  327. package/src/Stepper.macos.tsrx +52 -0
  328. package/src/Stepper.tsrx +31 -0
  329. package/src/Stepper.web.tsrx +37 -0
  330. package/src/Switch.tsrx +21 -0
  331. package/src/Switch.web.tsrx +28 -0
  332. package/src/Table.macos.tsrx +37 -0
  333. package/src/Table.tsrx +37 -0
  334. package/src/Table.web.tsrx +37 -0
  335. package/src/Tabs.macos.tsrx +60 -0
  336. package/src/Tabs.tsrx +55 -0
  337. package/src/Tabs.web.tsrx +98 -0
  338. package/src/Text.macos.tsrx +18 -0
  339. package/src/Text.tsrx +62 -0
  340. package/src/Text.web.tsrx +31 -0
  341. package/src/TextArea.tsrx +65 -0
  342. package/src/TextArea.web.tsrx +61 -0
  343. package/src/TextInput.tsrx +39 -0
  344. package/src/TextInput.web.tsrx +28 -0
  345. package/src/Timeline.macos.tsrx +27 -0
  346. package/src/Timeline.tsrx +24 -0
  347. package/src/Timeline.web.tsrx +22 -0
  348. package/src/Tooltip.mobile.tsrx +20 -0
  349. package/src/Tooltip.tsrx +102 -0
  350. package/src/Tooltip.web.tsrx +156 -0
  351. package/src/Tree.macos.tsrx +45 -0
  352. package/src/Tree.tsrx +45 -0
  353. package/src/Tree.web.tsrx +52 -0
  354. package/src/User.macos.tsrx +24 -0
  355. package/src/User.tsrx +24 -0
  356. package/src/User.web.tsrx +24 -0
  357. package/src/View.macos.tsrx +29 -0
  358. package/src/View.tsrx +32 -0
  359. package/src/View.web.tsrx +33 -0
  360. package/src/VirtualList.macos.tsrx +335 -0
  361. package/src/VirtualList.tsrx +358 -0
  362. package/src/VirtualList.web.tsrx +313 -0
  363. package/src/WebView.macos.tsrx +6 -0
  364. package/src/WebView.tsrx +89 -0
  365. package/src/WebView.web.tsrx +92 -0
  366. package/src/aliases.macos.tsrx +18 -0
  367. package/src/aliases.tsrx +18 -0
  368. package/src/aliases.web.tsrx +17 -0
  369. package/src/android/BottomNavigationView.android.tsrx +170 -0
  370. package/src/android/CircularProgressIndicator.android.tsrx +19 -0
  371. package/src/android/DrawerLayout.android.tsrx +48 -0
  372. package/src/android/MaterialDialog.android.tsrx +62 -0
  373. package/src/android/MaterialSwitch.android.tsrx +18 -0
  374. package/src/android/RecyclerView.android.tsrx +173 -0
  375. package/src/android/SeekBar.android.tsrx +20 -0
  376. package/src/android/icon.android.ts +8 -0
  377. package/src/android/index.ts +37 -0
  378. package/src/android/openModal.android.ts +55 -0
  379. package/src/anim.macos.tsrx +20 -0
  380. package/src/anim.tsrx +65 -0
  381. package/src/anim.web.tsrx +55 -0
  382. package/src/apply-native-modifiers.native.ts +13 -0
  383. package/src/camera-permission.web.ts +11 -0
  384. package/src/child-array.ts +16 -0
  385. package/src/colorScheme.macos.ts +27 -0
  386. package/src/controls.macos.tsrx +171 -0
  387. package/src/cx.ts +8 -0
  388. package/src/escape-props.macos.ts +11 -0
  389. package/src/escape-props.ts +70 -0
  390. package/src/escape-props.web.ts +25 -0
  391. package/src/hosted-unsupported.macos.tsrx +9 -0
  392. package/src/icons.ts +60 -0
  393. package/src/index.linux.ts +10 -0
  394. package/src/index.macos.ts +106 -0
  395. package/src/index.mobile.ts +6 -0
  396. package/src/index.shared.ts +269 -0
  397. package/src/index.ts +1 -0
  398. package/src/index.web.ts +261 -0
  399. package/src/ios/LiquidGlass.ios.tsrx +41 -0
  400. package/src/ios/LiquidGlassContainer.ios.tsrx +34 -0
  401. package/src/ios/SideDrawer.ios.tsrx +49 -0
  402. package/src/ios/UIActivityIndicatorView.ios.tsrx +18 -0
  403. package/src/ios/UIModal.ios.tsrx +68 -0
  404. package/src/ios/UISlider.ios.tsrx +20 -0
  405. package/src/ios/UISwitch.ios.tsrx +18 -0
  406. package/src/ios/UITabBar.ios.tsrx +172 -0
  407. package/src/ios/UITableView.ios.tsrx +186 -0
  408. package/src/ios/icon.ios.ts +8 -0
  409. package/src/ios/index.ts +42 -0
  410. package/src/ios/openModal.ios.ts +55 -0
  411. package/src/keyboard-inset.mobile.ts +89 -0
  412. package/src/layout-child.ts +57 -0
  413. package/src/layout-child.web.ts +108 -0
  414. package/src/layout-shells.macos.tsrx +10 -0
  415. package/src/layout.macos.tsrx +41 -0
  416. package/src/macos-extras.macos.tsrx +40 -0
  417. package/src/meter-math.ts +6 -0
  418. package/src/modal-presenter.mobile.ts +24 -0
  419. package/src/modifier-factories.ts +20 -0
  420. package/src/native/index.ts +6 -0
  421. package/src/pan.tsrx +64 -0
  422. package/src/pan.web.tsrx +38 -0
  423. package/src/platform.macos.ts +1 -0
  424. package/src/platform.ts +7 -0
  425. package/src/platform.web.ts +6 -0
  426. package/src/platformProps.ts +23 -0
  427. package/src/platformProps.web.ts +14 -0
  428. package/src/popover-position.ts +62 -0
  429. package/src/popover.mobile.test.ts +54 -0
  430. package/src/props.ts +1812 -0
  431. package/src/references.d.ts +2 -0
  432. package/src/refresh-metrics.ts +11 -0
  433. package/src/refresh.ts +271 -0
  434. package/src/refresh.web.test.ts +111 -0
  435. package/src/refresh.web.ts +205 -0
  436. package/src/root-layout.mobile.ts +89 -0
  437. package/src/route-host.mobile.ts +1 -0
  438. package/src/route-table.test.ts +345 -0
  439. package/src/route-table.ts +585 -0
  440. package/src/route.macos.ts +201 -0
  441. package/src/route.ts +703 -0
  442. package/src/route.web.ts +366 -0
  443. package/src/safeAreaInsets.macos.tsrx +7 -0
  444. package/src/safeAreaInsets.tsrx +60 -0
  445. package/src/safeAreaInsets.web.tsrx +38 -0
  446. package/src/sheet-detents.ts +142 -0
  447. package/src/sheet-detents.web.ts +147 -0
  448. package/src/sheet-service.macos.ts +60 -0
  449. package/src/sheet-service.ts +124 -0
  450. package/src/sheet-service.web.ts +64 -0
  451. package/src/sheet-snap.test.ts +46 -0
  452. package/src/sheet-snap.ts +66 -0
  453. package/src/stacks.macos.ts +13 -0
  454. package/src/stacks.ts +44 -0
  455. package/src/stacks.web.ts +9 -0
  456. package/src/store.mobile.test.ts +149 -0
  457. package/src/store.ts +39 -0
  458. package/src/store.web.test.tsrx +58 -0
  459. package/src/styled.macos.tsrx +23 -0
  460. package/src/styled.test.ts +40 -0
  461. package/src/styled.tsrx +36 -0
  462. package/src/styled.web.tsrx +23 -0
  463. package/src/surfaces.macos.tsrx +27 -0
  464. package/src/svg.mobile.ts +76 -0
  465. package/src/tap-to-blur.mobile.ts +108 -0
  466. package/src/text-controls.macos.tsrx +11 -0
  467. package/src/text-write.ts +28 -0
  468. package/src/text-write.web.ts +13 -0
  469. package/src/theme/colorScheme.linux.ts +52 -0
  470. package/src/theme/colorScheme.ts +26 -0
  471. package/src/theme/colorScheme.web.ts +20 -0
  472. package/src/theme/status-bar-scheme.mobile.ts +39 -0
  473. package/src/theme/theme-scheme.macos.ts +50 -0
  474. package/src/theme/theme-scheme.ts +66 -0
  475. package/src/theme/tokens.css +44 -22
  476. package/src/toast-anchor.macos.tsrx +3 -0
  477. package/src/toast-anchor.tsrx +122 -0
  478. package/src/toast-anchor.web.tsrx +92 -0
  479. package/src/toast.tsrx +90 -0
  480. package/src/toast.web.tsrx +50 -0
  481. package/src/transform.web.ts +52 -0
  482. package/src/translate.macos.ts +5 -0
  483. package/src/translate.ts +13 -0
  484. package/src/translate.web.ts +15 -0
  485. package/src/tsconfig.json +8 -0
  486. package/src/unsupported.macos.tsrx +5 -0
  487. package/src/use-back.tsrx +11 -0
  488. package/src/use-back.web.tsrx +12 -0
  489. package/src/use-store.tsrx +18 -0
  490. package/src/use-store.web.tsrx +18 -0
  491. package/src/useMeasure.macos.tsrx +23 -0
  492. package/src/useMeasure.tsrx +66 -0
  493. package/src/useMeasure.web.tsrx +39 -0
  494. package/src/useStore.macos.tsrx +6 -0
  495. package/src/vendor/ui-svg/LICENSE +201 -0
  496. package/src/vendor/ui-svg/index.android.ts +189 -0
  497. package/src/vendor/ui-svg/index.common.ts +19 -0
  498. package/src/vendor/ui-svg/index.ios.ts +147 -0
  499. package/src/vendor/ui-svg/index.ts +1 -0
  500. package/src/vendor/ui-svg/typings/SVGKit.d.ts +2862 -0
  501. package/src/vendor/ui-svg/typings/android.d.ts +1483 -0
  502. package/src/vendor/ui-svg/typings/ios.d.ts +1511 -0
  503. package/src/virtual-list-layout.test.ts +81 -0
  504. package/src/virtual-list-layout.ts +246 -0
  505. package/src/web/index.ts +11 -0
  506. package/src/windows.linux.ts +59 -0
  507. package/src/windows.macos.ts +10 -0
  508. package/src/windows.ts +7 -0
  509. package/src/windows.web.ts +6 -0
  510. package/types/generated/.tsrx-typegen-manifest.json +249 -0
  511. package/types/generated/Absolute.d.ts +3 -0
  512. package/types/generated/Absolute.web.d.ts +3 -0
  513. package/types/generated/Accordion.d.ts +5 -0
  514. package/types/generated/Accordion.web.d.ts +5 -0
  515. package/types/generated/ActivityIndicator.d.ts +7 -0
  516. package/types/generated/ActivityIndicator.web.d.ts +3 -0
  517. package/types/generated/Alert.d.ts +4 -0
  518. package/types/generated/Alert.web.d.ts +5 -0
  519. package/types/generated/Avatar.d.ts +6 -0
  520. package/types/generated/Avatar.web.d.ts +7 -0
  521. package/types/generated/AvatarGroup.d.ts +6 -0
  522. package/types/generated/AvatarGroup.web.d.ts +6 -0
  523. package/types/generated/Badge.d.ts +5 -0
  524. package/types/generated/Badge.web.d.ts +5 -0
  525. package/types/generated/Banner.d.ts +4 -0
  526. package/types/generated/Banner.web.d.ts +4 -0
  527. package/types/generated/Breadcrumb.d.ts +4 -0
  528. package/types/generated/Breadcrumb.web.d.ts +5 -0
  529. package/types/generated/Button.d.ts +6 -0
  530. package/types/generated/Button.web.d.ts +6 -0
  531. package/types/generated/Card.d.ts +4 -0
  532. package/types/generated/Card.web.d.ts +4 -0
  533. package/types/generated/Checkbox.d.ts +5 -0
  534. package/types/generated/Checkbox.web.d.ts +6 -0
  535. package/types/generated/CheckboxGroup.d.ts +3 -0
  536. package/types/generated/CheckboxGroup.web.d.ts +3 -0
  537. package/types/generated/Chip.d.ts +5 -0
  538. package/types/generated/Chip.web.d.ts +5 -0
  539. package/types/generated/Collapsible.d.ts +5 -0
  540. package/types/generated/Collapsible.web.d.ts +5 -0
  541. package/types/generated/CommandPalette.d.ts +4 -0
  542. package/types/generated/CommandPalette.web.d.ts +4 -0
  543. package/types/generated/ContextMenu.d.ts +5 -0
  544. package/types/generated/ContextMenu.web.d.ts +4 -0
  545. package/types/generated/Drawer.d.ts +7 -0
  546. package/types/generated/Drawer.web.d.ts +7 -0
  547. package/types/generated/DropdownMenu.d.ts +5 -0
  548. package/types/generated/DropdownMenu.web.d.ts +5 -0
  549. package/types/generated/Empty.d.ts +4 -0
  550. package/types/generated/Empty.web.d.ts +4 -0
  551. package/types/generated/FieldGroup.d.ts +4 -0
  552. package/types/generated/FieldGroup.web.d.ts +4 -0
  553. package/types/generated/FormField.d.ts +5 -0
  554. package/types/generated/FormField.web.d.ts +5 -0
  555. package/types/generated/Grid.d.ts +3 -0
  556. package/types/generated/Grid.web.d.ts +3 -0
  557. package/types/generated/Heading.d.ts +2 -0
  558. package/types/generated/Heading.web.d.ts +2 -0
  559. package/types/generated/Hoverable.d.ts +10 -0
  560. package/types/generated/Hoverable.web.d.ts +9 -0
  561. package/types/generated/Icon.d.ts +3 -0
  562. package/types/generated/Icon.web.d.ts +3 -0
  563. package/types/generated/Image.d.ts +7 -0
  564. package/types/generated/Image.web.d.ts +3 -0
  565. package/types/generated/InputNumber.d.ts +5 -0
  566. package/types/generated/InputNumber.web.d.ts +5 -0
  567. package/types/generated/InputRating.d.ts +4 -0
  568. package/types/generated/InputRating.web.d.ts +4 -0
  569. package/types/generated/InputTags.d.ts +4 -0
  570. package/types/generated/InputTags.web.d.ts +5 -0
  571. package/types/generated/Kbd.d.ts +4 -0
  572. package/types/generated/Kbd.web.d.ts +4 -0
  573. package/types/generated/KeyboardAvoiding.mobile.d.ts +2 -0
  574. package/types/generated/Link.d.ts +2 -0
  575. package/types/generated/Link.web.d.ts +3 -0
  576. package/types/generated/ListItem.d.ts +3 -0
  577. package/types/generated/ListItem.web.d.ts +3 -0
  578. package/types/generated/Meter.d.ts +3 -0
  579. package/types/generated/Meter.web.d.ts +3 -0
  580. package/types/generated/NavLink.d.ts +3 -0
  581. package/types/generated/NavLink.web.d.ts +3 -0
  582. package/types/generated/NavigationMenu.d.ts +4 -0
  583. package/types/generated/NavigationMenu.web.d.ts +5 -0
  584. package/types/generated/Overlay.d.ts +3 -0
  585. package/types/generated/Overlay.web.d.ts +3 -0
  586. package/types/generated/Pagination.d.ts +4 -0
  587. package/types/generated/Pagination.web.d.ts +5 -0
  588. package/types/generated/PinInput.d.ts +4 -0
  589. package/types/generated/PinInput.web.d.ts +4 -0
  590. package/types/generated/Popover.d.ts +6 -0
  591. package/types/generated/Popover.web.d.ts +3 -0
  592. package/types/generated/Pressable.d.ts +6 -0
  593. package/types/generated/Pressable.web.d.ts +2 -0
  594. package/types/generated/ProgressGroup.d.ts +3 -0
  595. package/types/generated/ProgressGroup.web.d.ts +4 -0
  596. package/types/generated/RadioGroup.d.ts +5 -0
  597. package/types/generated/RadioGroup.web.d.ts +5 -0
  598. package/types/generated/RichText.d.ts +7 -0
  599. package/types/generated/RichText.web.d.ts +3 -0
  600. package/types/generated/RouteHost.mobile.d.ts +14 -0
  601. package/types/generated/Row.d.ts +2 -0
  602. package/types/generated/Row.web.d.ts +2 -0
  603. package/types/generated/SafeArea.d.ts +2 -0
  604. package/types/generated/SafeArea.web.d.ts +3 -0
  605. package/types/generated/Screen.d.ts +3 -0
  606. package/types/generated/Screen.web.d.ts +3 -0
  607. package/types/generated/ScrollBox.d.ts +3 -0
  608. package/types/generated/ScrollBox.web.d.ts +3 -0
  609. package/types/generated/ScrollView.d.ts +7 -0
  610. package/types/generated/ScrollView.web.d.ts +6 -0
  611. package/types/generated/SearchInput.d.ts +7 -0
  612. package/types/generated/SearchInput.web.d.ts +6 -0
  613. package/types/generated/SegmentedControl.d.ts +7 -0
  614. package/types/generated/SegmentedControl.web.d.ts +6 -0
  615. package/types/generated/Select.d.ts +6 -0
  616. package/types/generated/Select.web.d.ts +6 -0
  617. package/types/generated/Separator.d.ts +5 -0
  618. package/types/generated/Separator.web.d.ts +5 -0
  619. package/types/generated/Sheet.d.ts +5 -0
  620. package/types/generated/Sheet.web.d.ts +7 -0
  621. package/types/generated/Skeleton.d.ts +5 -0
  622. package/types/generated/Skeleton.web.d.ts +6 -0
  623. package/types/generated/Slider.d.ts +6 -0
  624. package/types/generated/Slider.web.d.ts +6 -0
  625. package/types/generated/Spacer.d.ts +3 -0
  626. package/types/generated/Spacer.web.d.ts +3 -0
  627. package/types/generated/Stack.d.ts +3 -0
  628. package/types/generated/Stack.web.d.ts +3 -0
  629. package/types/generated/Stepper.d.ts +4 -0
  630. package/types/generated/Stepper.web.d.ts +5 -0
  631. package/types/generated/Switch.d.ts +7 -0
  632. package/types/generated/Switch.web.d.ts +6 -0
  633. package/types/generated/Table.d.ts +4 -0
  634. package/types/generated/Table.web.d.ts +5 -0
  635. package/types/generated/Tabs.d.ts +10 -0
  636. package/types/generated/Tabs.web.d.ts +6 -0
  637. package/types/generated/Text.d.ts +2 -0
  638. package/types/generated/Text.web.d.ts +2 -0
  639. package/types/generated/TextArea.d.ts +8 -0
  640. package/types/generated/TextArea.web.d.ts +9 -0
  641. package/types/generated/TextInput.d.ts +9 -0
  642. package/types/generated/TextInput.web.d.ts +2 -0
  643. package/types/generated/Timeline.d.ts +3 -0
  644. package/types/generated/Timeline.web.d.ts +4 -0
  645. package/types/generated/Tooltip.d.ts +9 -0
  646. package/types/generated/Tooltip.web.d.ts +12 -0
  647. package/types/generated/Tree.d.ts +4 -0
  648. package/types/generated/Tree.web.d.ts +4 -0
  649. package/types/generated/User.d.ts +5 -0
  650. package/types/generated/User.web.d.ts +5 -0
  651. package/types/generated/View.d.ts +7 -0
  652. package/types/generated/View.web.d.ts +7 -0
  653. package/types/generated/VirtualList.d.ts +5 -0
  654. package/types/generated/VirtualList.web.d.ts +4 -0
  655. package/types/generated/WebView.d.ts +11 -0
  656. package/types/generated/WebView.web.d.ts +5 -0
  657. package/types/generated/aliases.d.ts +7 -0
  658. package/types/generated/aliases.web.d.ts +7 -0
  659. package/types/generated/android/BottomNavigationView.android.d.ts +9 -0
  660. package/types/generated/android/CircularProgressIndicator.android.d.ts +6 -0
  661. package/types/generated/android/DrawerLayout.android.d.ts +12 -0
  662. package/types/generated/android/MaterialDialog.android.d.ts +8 -0
  663. package/types/generated/android/MaterialSwitch.android.d.ts +6 -0
  664. package/types/generated/android/RecyclerView.android.d.ts +14 -0
  665. package/types/generated/android/SeekBar.android.d.ts +5 -0
  666. package/types/generated/android/icon.android.d.ts +5 -0
  667. package/types/generated/android/index.d.ts +12 -0
  668. package/types/generated/android/openModal.android.d.ts +4 -0
  669. package/types/generated/anim.d.ts +10 -0
  670. package/types/generated/anim.web.d.ts +3 -0
  671. package/types/generated/apply-native-modifiers.native.d.ts +3 -0
  672. package/types/generated/child-array.d.ts +3 -0
  673. package/types/generated/cx.d.ts +6 -0
  674. package/types/generated/escape-props.d.ts +16 -0
  675. package/types/generated/icons.d.ts +5 -0
  676. package/types/generated/index.d.ts +1 -0
  677. package/types/generated/index.linux.d.ts +5 -0
  678. package/types/generated/index.mobile.d.ts +4 -0
  679. package/types/generated/index.shared.d.ts +111 -0
  680. package/types/generated/index.web.d.ts +111 -0
  681. package/types/generated/ios/LiquidGlass.ios.d.ts +12 -0
  682. package/types/generated/ios/LiquidGlassContainer.ios.d.ts +13 -0
  683. package/types/generated/ios/SideDrawer.ios.d.ts +12 -0
  684. package/types/generated/ios/UIActivityIndicatorView.ios.d.ts +5 -0
  685. package/types/generated/ios/UIModal.ios.d.ts +7 -0
  686. package/types/generated/ios/UISlider.ios.d.ts +5 -0
  687. package/types/generated/ios/UISwitch.ios.d.ts +6 -0
  688. package/types/generated/ios/UITabBar.ios.d.ts +7 -0
  689. package/types/generated/ios/UITableView.ios.d.ts +14 -0
  690. package/types/generated/ios/icon.ios.d.ts +5 -0
  691. package/types/generated/ios/index.d.ts +14 -0
  692. package/types/generated/ios/openModal.ios.d.ts +4 -0
  693. package/types/generated/keyboard-inset.mobile.d.ts +10 -0
  694. package/types/generated/layout-child.d.ts +6 -0
  695. package/types/generated/layout-child.web.d.ts +15 -0
  696. package/types/generated/meter-math.d.ts +6 -0
  697. package/types/generated/modal-presenter.mobile.d.ts +14 -0
  698. package/types/generated/modifier-factories.d.ts +15 -0
  699. package/types/generated/native/index.d.ts +3 -0
  700. package/types/generated/pan.d.ts +2 -0
  701. package/types/generated/pan.web.d.ts +9 -0
  702. package/types/generated/platform.d.ts +7 -0
  703. package/types/generated/platform.web.d.ts +6 -0
  704. package/types/generated/platformProps.d.ts +7 -0
  705. package/types/generated/platformProps.web.d.ts +2 -0
  706. package/types/generated/popover-position.d.ts +14 -0
  707. package/types/{props.d.ts → generated/props.d.ts} +127 -133
  708. package/types/generated/refresh-metrics.d.ts +8 -0
  709. package/types/generated/refresh.d.ts +42 -0
  710. package/types/generated/refresh.web.d.ts +23 -0
  711. package/types/generated/root-layout.mobile.d.ts +22 -0
  712. package/types/generated/route-host.mobile.d.ts +1 -0
  713. package/types/generated/route-table.d.ts +90 -0
  714. package/types/generated/route.d.ts +74 -0
  715. package/types/generated/route.web.d.ts +67 -0
  716. package/types/generated/safeAreaInsets.d.ts +8 -0
  717. package/types/generated/safeAreaInsets.web.d.ts +8 -0
  718. package/types/generated/sheet-detents.d.ts +23 -0
  719. package/types/generated/sheet-detents.web.d.ts +13 -0
  720. package/types/generated/sheet-service.d.ts +11 -0
  721. package/types/generated/sheet-service.web.d.ts +6 -0
  722. package/types/generated/sheet-snap.d.ts +18 -0
  723. package/types/generated/stacks.d.ts +9 -0
  724. package/types/generated/stacks.web.d.ts +4 -0
  725. package/types/generated/store.d.ts +14 -0
  726. package/types/generated/styled.d.ts +20 -0
  727. package/types/generated/styled.web.d.ts +10 -0
  728. package/types/generated/svg.mobile.d.ts +23 -0
  729. package/types/generated/tap-to-blur.mobile.d.ts +16 -0
  730. package/types/generated/text-write.d.ts +9 -0
  731. package/types/generated/theme/colorScheme.d.ts +6 -0
  732. package/types/generated/theme/colorScheme.linux.d.ts +5 -0
  733. package/types/generated/theme/colorScheme.web.d.ts +5 -0
  734. package/types/generated/theme/status-bar-scheme.mobile.d.ts +1 -0
  735. package/types/generated/theme/theme-scheme.d.ts +20 -0
  736. package/types/generated/toast-anchor.d.ts +4 -0
  737. package/types/generated/toast-anchor.web.d.ts +4 -0
  738. package/types/generated/transform.web.d.ts +8 -0
  739. package/types/generated/translate.d.ts +5 -0
  740. package/types/generated/translate.web.d.ts +6 -0
  741. package/types/generated/use-back.d.ts +6 -0
  742. package/types/generated/use-back.web.d.ts +7 -0
  743. package/types/generated/use-store.d.ts +9 -0
  744. package/types/generated/use-store.web.d.ts +9 -0
  745. package/types/generated/useMeasure.d.ts +3 -0
  746. package/types/generated/useMeasure.web.d.ts +3 -0
  747. package/types/generated/vendor/ui-svg/index.common.d.ts +7 -0
  748. package/types/generated/vendor/ui-svg/index.d.ts +1 -0
  749. package/types/generated/vendor/ui-svg/index.ios.d.ts +13 -0
  750. package/types/generated/virtual-list-layout.d.ts +44 -0
  751. package/types/generated/web/index.d.ts +3 -0
  752. package/types/generated/windows.d.ts +3 -0
  753. package/types/generated/windows.linux.d.ts +15 -0
  754. package/types/generated/windows.web.d.ts +3 -0
  755. package/types/index.macos.d.ts +142 -0
  756. package/dist/native/CameraView.native.tsrx.js +0 -165
  757. package/dist/native/Meter.native.tsrx.js +0 -92
  758. package/dist/native/Pager.native.tsrx.js +0 -282
  759. package/dist/native/Video.native.tsrx.js +0 -248
  760. package/dist/native/camera-permission.native.js +0 -47
  761. package/dist/native/safeAreaInsets.native.tsrx.js +0 -35
  762. package/dist/native/video-chrome.native.tsrx.js +0 -365
  763. package/dist/web/CameraView.web.tsrx.js +0 -310
  764. package/dist/web/Pager.web.tsrx.js +0 -337
  765. package/dist/web/Video.web.tsrx.js +0 -400
  766. package/dist/web/video-chrome.web.tsrx.js +0 -207
  767. package/types/android.d.ts +0 -53
  768. package/types/index.d.ts +0 -273
  769. package/types/index.native.d.ts +0 -273
  770. package/types/index.web.d.ts +0 -272
  771. package/types/ios.d.ts +0 -59
  772. package/types/native.d.ts +0 -5
  773. package/types/web.d.ts +0 -17
@@ -0,0 +1,149 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import {
3
+ createContext,
4
+ createObjectContainer,
5
+ createObjectDriver,
6
+ createUniversalRoot,
7
+ defineUniversalComponent,
8
+ flushUniversalSync,
9
+ universalComponent,
10
+ universalPlan,
11
+ universalValue,
12
+ useContext,
13
+ } from 'octane/universal/native'
14
+
15
+ import { createStore } from './store'
16
+ import { useStore } from './use-store'
17
+
18
+ // Universal-runtime scheduler semantics, exercised through the object driver
19
+ // (the same retain/dirty-epoch path the NativeScript driver runs). These tests
20
+ // pin the deliberate divergence from the DOM renderer: a re-rendering parent
21
+ // retains children whose props are shallow-unchanged, so module-store reads
22
+ // only refresh in components that subscribe themselves — via useStore.
23
+
24
+ const labelPlan = universalPlan('object', {
25
+ kind: 'host',
26
+ type: 'label',
27
+ bindings: [['value', 0]],
28
+ })
29
+
30
+ const label = (value: string) => universalValue(labelPlan, [value])
31
+ const texts = (container: ReturnType<typeof createObjectContainer>) =>
32
+ container.children.map((c: any) => c.props.value)
33
+
34
+ function objectRoot() {
35
+ const container = createObjectContainer()
36
+ return { container, root: createUniversalRoot(container, createObjectDriver()) }
37
+ }
38
+
39
+ describe('universal renderer — store reads under parent re-render', () => {
40
+ it('refreshes a child that reads the store through useStore', () => {
41
+ const store = createStore(0)
42
+ const Child = defineUniversalComponent('object', () => label(`child:${useStore(store)}`))
43
+ const Parent = defineUniversalComponent('object', () => {
44
+ useStore(store)
45
+ return [universalComponent('object', Child, { stable: 'same' }), label('parent')]
46
+ })
47
+
48
+ const { container, root } = objectRoot()
49
+ root.render(Parent, {})
50
+ expect(texts(container)).toEqual(['child:0', 'parent'])
51
+
52
+ flushUniversalSync(() => store.set(1))
53
+ expect(texts(container)).toEqual(['child:1', 'parent'])
54
+ root.unmount()
55
+ })
56
+
57
+ it('retains a child that reads the store bare — the divergence useStore fixes', () => {
58
+ const store = createStore(0)
59
+ const renders = { bare: 0, propDriven: 0 }
60
+ // Bare read: no subscription — a retained child never re-runs.
61
+ const BareChild = defineUniversalComponent('object', () => {
62
+ renders.bare++
63
+ return label(`bare:${store.get()}`)
64
+ })
65
+
66
+ // Control: a child whose PROPS change still re-renders normally.
67
+ const PropChild = defineUniversalComponent('object', (props: { tick: number }) => {
68
+ renders.propDriven++
69
+ return label(`prop:${props.tick}`)
70
+ })
71
+
72
+ const Parent = defineUniversalComponent('object', (props: { tick: number }) => {
73
+ useStore(store)
74
+ return [
75
+ universalComponent('object', BareChild, { stable: 'same' }),
76
+ universalComponent('object', PropChild, { tick: props.tick }),
77
+ ]
78
+ })
79
+
80
+ const { container, root } = objectRoot()
81
+ root.render(Parent, { tick: 0 })
82
+ expect(texts(container)).toEqual(['bare:0', 'prop:0'])
83
+
84
+ // Store write: parent re-renders, bare-read child is retained → stale.
85
+ flushUniversalSync(() => store.set(1))
86
+ expect(renders.bare).toBe(1)
87
+ expect(texts(container)).toEqual(['bare:0', 'prop:0'])
88
+
89
+ // Changed props still re-render the same child — retention keys on
90
+ // shallow-equal props, not on component identity alone.
91
+ root.render(Parent, { tick: 1 })
92
+ expect(renders.propDriven).toBe(2)
93
+ expect(renders.bare).toBe(1)
94
+ expect(texts(container)).toEqual(['bare:0', 'prop:1'])
95
+ root.unmount()
96
+ })
97
+
98
+ it('re-renders a retained child when its consumed context changes', () => {
99
+ const Theme = createContext('light')
100
+ const renders = { ctx: 0, plain: 0 }
101
+ const CtxChild = defineUniversalComponent('object', () => {
102
+ renders.ctx++
103
+ return label(`ctx:${useContext(Theme)}`)
104
+ })
105
+
106
+ const PlainChild = defineUniversalComponent('object', () => {
107
+ renders.plain++
108
+ return label('plain')
109
+ })
110
+
111
+ const Parent = defineUniversalComponent('object', (props: { theme: string }) => [
112
+ universalComponent('object', Theme, {
113
+ value: props.theme,
114
+ children: universalComponent('object', CtxChild, { stable: 'same' }),
115
+ }),
116
+ universalComponent('object', PlainChild, { stable: 'same' }),
117
+ ])
118
+
119
+ const { container, root } = objectRoot()
120
+ root.render(Parent, { theme: 'light' })
121
+ expect(texts(container)).toEqual(['ctx:light', 'plain'])
122
+
123
+ // Changed provider value defeats retention for consumers only.
124
+ root.render(Parent, { theme: 'dark' })
125
+ expect(renders.ctx).toBe(2)
126
+ expect(renders.plain).toBe(1)
127
+ expect(texts(container)).toEqual(['ctx:dark', 'plain'])
128
+ root.unmount()
129
+ })
130
+
131
+ it('useStore with a selector re-renders only when the slice changes', () => {
132
+ const store = createStore({ a: 0, b: 0 })
133
+ const renders = { a: 0 }
134
+ const Child = defineUniversalComponent('object', () => {
135
+ renders.a++
136
+ return label(`a:${useStore(store, (s) => s.a)}`)
137
+ })
138
+
139
+ const { container, root } = objectRoot()
140
+ root.render(Child, {})
141
+ expect(texts(container)).toEqual(['a:0'])
142
+
143
+ flushUniversalSync(() => store.set({ a: 0, b: 1 }))
144
+ expect(renders.a).toBe(1) // slice unchanged → no re-render
145
+ flushUniversalSync(() => store.set({ a: 2, b: 1 }))
146
+ expect(texts(container)).toEqual(['a:2'])
147
+ root.unmount()
148
+ })
149
+ })
package/src/store.ts ADDED
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Module-scope store — the shared-state primitive for this stack.
3
+ *
4
+ * Why it exists: the universal (native) renderer RETAINS child components
5
+ * whose props are shallow-unchanged when a parent re-renders — their render
6
+ * functions do not re-run, so a bare `store.get()` in a child stays stale
7
+ * (the DOM renderer re-invokes them, React-style). The portable rule is:
8
+ * every component that reads shared state subscribes to it. The renderer-owned
9
+ * `use-store` leaves implement that subscription; this file is the hook-free
10
+ * half, so plain `.ts` is correct.
11
+ */
12
+ import type { Store } from './props'
13
+
14
+ export type { ReadableStore, Store } from './props'
15
+
16
+ export function createStore<T>(initial: T): Store<T> {
17
+ let value = initial
18
+ const listeners = new Set<() => void>()
19
+ return {
20
+ get: () => value,
21
+ set(next) {
22
+ const v = typeof next === 'function' ? (next as (p: T) => T)(value) : next
23
+ if (Object.is(v, value)) {
24
+ return
25
+ }
26
+
27
+ value = v
28
+ for (const l of [...listeners]) {
29
+ l()
30
+ }
31
+ },
32
+ subscribe(notify) {
33
+ listeners.add(notify)
34
+ return () => {
35
+ listeners.delete(notify)
36
+ }
37
+ },
38
+ }
39
+ }
@@ -0,0 +1,58 @@
1
+ // @vitest-environment jsdom
2
+ import { describe, expect, it } from 'vitest';
3
+ import { act, createRoot } from 'octane';
4
+ import { createStore } from './store';
5
+ import { useStore } from './use-store';
6
+
7
+ // DOM-renderer counterpart to store.mobile.test.ts. Here a parent re-render
8
+ // re-invokes children with unchanged props (React semantics — memo() is the
9
+ // only bail), so a bare store.get() in a child refreshes incidentally. The
10
+ // portable rule is still: readers subscribe via useStore.
11
+
12
+ const store = createStore(0);
13
+
14
+ function BareChild() @{
15
+ <span class="bare">{String(store.get())}</span>
16
+ }
17
+
18
+ function SubbedChild() @{
19
+ const v = useStore(store);
20
+
21
+ <span class="subbed">{String(v)}</span>
22
+ }
23
+
24
+ function SelectedChild() @{
25
+ const v = useStore(store, (s) => s * 10);
26
+
27
+ <span class="sel">{String(v)}</span>
28
+ }
29
+
30
+ function Parent() @{
31
+ useStore(store);
32
+
33
+ <>
34
+ <BareChild />
35
+ <SubbedChild />
36
+ <SelectedChild />
37
+ </>
38
+ }
39
+
40
+ describe('createStore + useStore (DOM renderer)', () => {
41
+ it('parent store subscription re-renders a bare-read child too (DOM semantics)', () => {
42
+ const el = document.createElement('div');
43
+ document.body.appendChild(el);
44
+ const root = createRoot(el);
45
+ act(() => root.render(<Parent />));
46
+ expect(el.querySelector('.bare')!.textContent).toBe('0');
47
+ expect(el.querySelector('.subbed')!.textContent).toBe('0');
48
+ expect(el.querySelector('.sel')!.textContent).toBe('0');
49
+
50
+ act(() => store.set(1));
51
+ // On DOM the retained child DOES re-run — the divergence this test pins.
52
+ expect(el.querySelector('.bare')!.textContent).toBe('1');
53
+ expect(el.querySelector('.subbed')!.textContent).toBe('1');
54
+ expect(el.querySelector('.sel')!.textContent).toBe('10');
55
+ root.unmount();
56
+ el.remove();
57
+ });
58
+ });
@@ -0,0 +1,23 @@
1
+ import { defineUniversalComponent, universalComponent } from 'octane/universal/native'
2
+ import { cx } from './cx'
3
+
4
+ /** Compose CSS-backed class names onto an AppKit component factory. */
5
+ export function styled<P extends { className?: any }, V extends Record<string, any>>(
6
+ Base: (props: P) => any,
7
+ def: { base?: any; variants?: V },
8
+ ) {
9
+ function Styled(props: P & { [K in keyof V]?: boolean }) {
10
+ const classes: any[] = [def.base]
11
+ const rest: any = { ...props }
12
+ for (const key of Object.keys(def.variants ?? {})) {
13
+ if ((props as any)[key]) {classes.push((def.variants as any)[key])}
14
+ delete rest[key]
15
+ }
16
+
17
+ if (props.className) {classes.push(props.className)}
18
+ rest.className = cx(classes)
19
+ return universalComponent('macos', Base as any, rest)
20
+ }
21
+
22
+ return defineUniversalComponent('macos', Styled)
23
+ }
@@ -0,0 +1,40 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { styled } from './styled.tsrx'
3
+ import { getColorScheme } from './theme/colorScheme.web'
4
+
5
+ // styled.tsrx builds elements via universalComponent() — a plain
6
+ // {$$kind, component, props:{props,key,hasKey,hasChildren}} object — so
7
+ // composition is node-testable. (Compiled components can't be
8
+ // direct-called for inspection on web — the runtime owns invocation.)
9
+
10
+ const Base = ((props: any) => props) as any
11
+ const inner = (el: any) => el.props.props
12
+
13
+ describe('styled() (native leaf)', () => {
14
+ const Btn = styled(Base, { base: 'btn', variants: { danger: 'bg-danger', flat: 'shadow-none' } })
15
+
16
+ it('composes base + variant classes', () => {
17
+ const el = Btn({ danger: true })
18
+ expect(inner(el).className).toEqual(['btn', 'bg-danger'])
19
+ expect(el.component).toBe(Base)
20
+ })
21
+
22
+ it('drops falsy variants and consumes variant props', () => {
23
+ const el = Btn({ danger: false, flat: true, id: 'b1' })
24
+ expect(inner(el).className).toEqual(['btn', 'shadow-none'])
25
+ expect(inner(el).danger).toBeUndefined()
26
+ expect(inner(el).flat).toBeUndefined()
27
+ expect(inner(el).id).toBe('b1') // non-variant props pass through
28
+ })
29
+
30
+ it('appends caller className last', () => {
31
+ const el = Btn({ danger: true, className: 'extra' })
32
+ expect(inner(el).className).toEqual(['btn', 'bg-danger', 'extra'])
33
+ })
34
+ })
35
+
36
+ describe('getColorScheme (web leaf)', () => {
37
+ it('falls back to light without matchMedia', () => {
38
+ expect(getColorScheme()).toBe('light')
39
+ })
40
+ })
@@ -0,0 +1,36 @@
1
+ import { defineUniversalComponent, universalComponent } from 'octane/universal/native';
2
+
3
+ /**
4
+ * styled() — decision #7, Tamagui-shaped but CSS-backed. base/variants are
5
+ * class strings composed into className; the leaf decides what those classes
6
+ * mean per platform.
7
+ *
8
+ * const DangerBtn = styled(Pressable, { base: 'btn', variants: { danger: 'bg-danger' } });
9
+ * <DangerBtn danger /> → className=['btn','bg-danger']
10
+ *
11
+ * Universal constraint (Exp 16): component elements require the
12
+ * compiler-stamped UNIVERSAL_COMPONENT mark and JSX/`@{ }` only lowers at
13
+ * module level — so a component factory can't be authored with JSX. This
14
+ * leaf stamps the mark itself via defineUniversalComponent and returns
15
+ * universalComponent(...) elements directly. If upstream exposes a blessed
16
+ * factory path, switch to it (driver-level fix candidate).
17
+ */
18
+ export function styled<P extends { className?: any }, V extends Record<string, any>>(
19
+ Base: (props: P) => any,
20
+ def: { base?: any; variants?: V },
21
+ ) {
22
+ function Styled(props: P & { [K in keyof V]?: boolean }) {
23
+ const cls: any[] = [def.base];
24
+ const rest: any = { ...props };
25
+ for (const k of Object.keys(def.variants ?? {})) {
26
+ if ((props as any)[k]) cls.push((def.variants as any)[k]);
27
+ delete rest[k]; // variant flags are consumed — don't leak to the leaf
28
+ }
29
+
30
+ if (props.className) cls.push(props.className);
31
+ rest.className = cls;
32
+ return universalComponent('nativescript', Base as any, rest);
33
+ }
34
+
35
+ return defineUniversalComponent('nativescript', Styled);
36
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * styled() — decision #7. Web side: DOM codegen lowers JSX in nested
3
+ * functions fine, so the factory is a plain component.
4
+ */
5
+ export function styled<P extends { className?: any }, V extends Record<string, any>>(
6
+ Base: (props: P) => any,
7
+ def: { base?: any; variants?: V },
8
+ ) {
9
+ function Styled(props: P & { [K in keyof V]?: boolean }) @{
10
+ const cls: any[] = [def.base];
11
+ const rest: any = { ...props };
12
+ for (const k of Object.keys(def.variants ?? {})) {
13
+ if ((props as any)[k]) cls.push((def.variants as any)[k]);
14
+ delete rest[k];
15
+ }
16
+
17
+ if (props.className) cls.push(props.className);
18
+
19
+ <Base {...rest} className={cls} />
20
+ }
21
+
22
+ return Styled;
23
+ }
@@ -0,0 +1,27 @@
1
+ /** @jsxImportSource @xplat/macos/renderer */
2
+ import type { OverlayProps, PopoverProps, SheetProps } from './props'
3
+ import { cx } from './cx'
4
+
5
+ export function Overlay(props: OverlayProps) @{
6
+ @if (props.open) {
7
+ <flexboxlayout flexDirection="column" className={cx('vx-overlay', props.className)} style={props.style}>
8
+ {props.children}
9
+ </flexboxlayout>
10
+ }
11
+ }
12
+
13
+ export function Popover(props: PopoverProps) @{
14
+ @if (props.open) {
15
+ <flexboxlayout flexDirection="column" className={cx('vx-popover', props.className)} style={props.style}>
16
+ {props.children}
17
+ </flexboxlayout>
18
+ }
19
+ }
20
+
21
+ export function Sheet(props: SheetProps) @{
22
+ @if (props.open) {
23
+ <flexboxlayout flexDirection="column" className={cx('vx-sheet', props.className)} style={props.style}>
24
+ {props.children}
25
+ </flexboxlayout>
26
+ }
27
+ }
@@ -0,0 +1,76 @@
1
+ import { registerElement } from '@nativescript-community/octane'
2
+ import type { Attributes } from '@nativescript-community/octane/intrinsics'
3
+ import { SVGView } from './vendor/ui-svg'
4
+ import type { IconGlyph } from './props'
5
+
6
+ declare module '@nativescript-community/octane/intrinsics' {
7
+ interface NativeScriptElements {
8
+ svgview: Omit<Attributes<typeof SVGView>, 'src'> & {
9
+ /** SVGView awaits promise srcs — remote .svg URLs arrive as fetched markup. */
10
+ src?: string | Promise<string>
11
+ stretch?: 'none' | 'fill' | 'aspectFit' | 'aspectFill'
12
+ }
13
+ }
14
+ }
15
+
16
+ // Vendored ui-svg SVGView (Icon + Image + Meter route SVG sources here
17
+ // unconditionally): SVGView renders via androidsvg on Android, SVGKit on iOS.
18
+ // Its src grammar is File / ImageAsset / res:// / ~/, or an inline markup
19
+ // string.
20
+ registerElement('svgview', SVGView)
21
+
22
+ const SVG_DATA_URI = /^data:image\/svg\+xml[;,]/i
23
+ const SVG_PATH = /\.svg([?#].*)?$/i
24
+ const EMPTY_SVG = '<svg xmlns="http://www.w3.org/2000/svg"/>'
25
+
26
+ /** True when an `src` carries SVG: inline markup, an svg data URI, or an
27
+ * .svg path/URL. Anything else stays on the raster <image> path. */
28
+ export function isSvgSrc(src: string): boolean {
29
+ return src.trimStart().startsWith('<svg') || SVG_DATA_URI.test(src) || SVG_PATH.test(src)
30
+ }
31
+
32
+ /** Normalize an svg-shaped src into SVGView's grammar: file/resource paths and
33
+ * markup pass through, data URIs decode to markup, remote URLs fetch to
34
+ * markup (SVGView has no fetch of its own — it awaits promise srcs). */
35
+ export function svgSource(src: string): string | Promise<string> {
36
+ if (SVG_DATA_URI.test(src)) {
37
+ const comma = src.indexOf(',')
38
+ const body = src.slice(comma + 1)
39
+ if (src.slice(0, comma).endsWith(';base64')) {
40
+ const atob = (globalThis as { atob?: (data: string) => string }).atob
41
+ if (!atob) {
42
+ return EMPTY_SVG
43
+ }
44
+
45
+ return atob(body)
46
+ }
47
+
48
+ return decodeURIComponent(body)
49
+ }
50
+
51
+ if (/^https?:\/\//.test(src)) {
52
+ return fetch(src)
53
+ .then((r) => (r.ok ? r.text() : EMPTY_SVG))
54
+ .catch(() => EMPTY_SVG)
55
+ }
56
+
57
+ return src
58
+ }
59
+
60
+ /** IconGlyph → a full `<svg>` string for SVGView. `svg` path data gets a
61
+ * `<path>` with the requested fill; `markup` wraps inside a viewBox shell
62
+ * with `color`/`fill` set on the root so `currentColor` and default-fill
63
+ * children pick up the tint. */
64
+ export function glyphSvgMarkup(glyph: IconGlyph, color?: string): string | undefined {
65
+ const viewBox = glyph.viewBox ?? '0 0 24 24'
66
+ if (glyph.markup) {
67
+ const tint = color ? ` color="${color}" fill="${color}"` : ''
68
+ return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBox}"${tint}>${glyph.markup}</svg>`
69
+ }
70
+
71
+ if (glyph.svg) {
72
+ return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBox}"><path d="${glyph.svg}" fill="${color ?? 'currentColor'}"/></svg>`
73
+ }
74
+
75
+ return undefined
76
+ }
@@ -0,0 +1,108 @@
1
+ import { Application } from '@nativescript/core';
2
+
3
+ /** Tap-outside-to-blur: iOS keeps a focused UITextField/UITextView as first
4
+ * responder until something else takes it, so a tap on blank chrome never
5
+ * dismisses the keyboard on its own.
6
+ *
7
+ * iOS: a single window-level UITapGestureRecognizer (ref-counted across
8
+ * attach calls) sees every touch in the app window — popups/sheets included —
9
+ * where a recognizer on an intermediate container proved unreliable. On each
10
+ * tap we hit-test and resign first responder unless the hit view is an
11
+ * editable text view (otherwise the field would focus-then-blur in the same
12
+ * tap — recognizers fire on touch-up, after the field's touch-down focus).
13
+ * Keyboard taps live in a separate UIWindow, so they never reach it.
14
+ * `cancelsTouchesInView` stays false so taps still reach buttons.
15
+ *
16
+ * Android: hides the soft keyboard from the currently focused view when a
17
+ * tap lands on the attached container. */
18
+ export function attachTapToBlur(view: any): () => void {
19
+ const marker = '__xplatTapToBlur';
20
+ if (!view || view[marker]) {return () => {};}
21
+ view[marker] = true;
22
+
23
+ if (Application.ios) {
24
+ iosAttach();
25
+ return () => {
26
+ view[marker] = false;
27
+ iosDetach();
28
+ };
29
+ }
30
+
31
+ if (Application.android) {
32
+ const handler = (_args: any) => {
33
+ const activity = Application.android.foregroundActivity;
34
+ const focused = activity?.currentFocus;
35
+ if (!focused) {return;}
36
+ const imm = activity.getSystemService(android.content.Context.INPUT_METHOD_SERVICE);
37
+ imm?.hideSoftInputFromWindow(focused.getWindowToken(), 0);
38
+ };
39
+
40
+ view.on('tap', handler);
41
+ return () => {
42
+ view[marker] = false;
43
+ view.off('tap', handler);
44
+ };
45
+ }
46
+
47
+ return () => {
48
+ view[marker] = false;
49
+ };
50
+ }
51
+
52
+ let iosCount = 0;
53
+ let iosTarget: any = null;
54
+ let iosRecognizer: any = null;
55
+ let iosWindow: any = null;
56
+
57
+ function iosAttach() {
58
+ iosCount++;
59
+ if (iosRecognizer) {return;}
60
+ const appWin = appWindow();
61
+ if (!appWin) {return;}
62
+ iosWindow = appWin;
63
+
64
+ const Owner = class extends NSObject {
65
+ static ObjCExposedMethods = {
66
+ tap: { returns: interop.types.void, params: [UITapGestureRecognizer] },
67
+ };
68
+ tap(recognizer: any) {
69
+ const point = recognizer.locationInView(iosWindow);
70
+ // hitTest can land on a text field's internal subview — walk up.
71
+ let hit = iosWindow.hitTest(point, null);
72
+ while (hit) {
73
+ if (hit instanceof UITextField || hit instanceof UITextView) {return;}
74
+ hit = hit.superview;
75
+ }
76
+
77
+ iosWindow.endEditing(true);
78
+ }
79
+ };
80
+
81
+ iosTarget = Owner.new();
82
+ iosRecognizer = UITapGestureRecognizer.alloc().initWithTargetAction(iosTarget, 'tap');
83
+ iosRecognizer.cancelsTouchesInView = false;
84
+ appWin.addGestureRecognizer(iosRecognizer);
85
+ }
86
+
87
+ function iosDetach() {
88
+ iosCount--;
89
+ if (iosCount > 0 || !iosRecognizer) {return;}
90
+ iosWindow?.removeGestureRecognizer(iosRecognizer);
91
+ iosRecognizer = null;
92
+ iosTarget = null;
93
+ iosWindow = null;
94
+ }
95
+
96
+ function appWindow() {
97
+ const scenes = UIApplication.sharedApplication.connectedScenes;
98
+ // connectedScenes is an NSSet — `allObjects` marshals to a JS array.
99
+ for (const scene of (scenes as any).allObjects ?? []) {
100
+ if (scene instanceof UIWindowScene) {
101
+ for (const w of (scene.windows as any)?.allObjects ?? scene.windows ?? []) {
102
+ if (w.isKeyWindow) {return w;}
103
+ }
104
+ }
105
+ }
106
+
107
+ return UIApplication.sharedApplication.keyWindow;
108
+ }
@@ -0,0 +1,11 @@
1
+ /** @jsxImportSource @xplat/macos/renderer */
2
+ import type { TextAreaProps, TextInputProps } from './props'
3
+ import { cx } from './cx'
4
+
5
+ export function TextInput(props: TextInputProps) @{
6
+ <textfield id={props.id} value={props.value} placeholder={props.placeholder} className={cx('vx-input', props.className)} style={props.style} onTextChange={props.onChange} accessibilityLabel={props.accessibilityLabel} />
7
+ }
8
+
9
+ export function TextArea(props: TextAreaProps) @{
10
+ <textview id={props.id} value={props.value} placeholder={props.placeholder} rows={props.autoGrow ? undefined : props.rows ?? 3} className={cx('vx-textarea', props.className)} style={props.style} onTextChange={props.onChange} accessibilityLabel={props.accessibilityLabel} />
11
+ }
@@ -0,0 +1,28 @@
1
+ /** Controlled `text` write for TextInput/TextArea leaves. The driver's
2
+ * generic prop path writes view.text verbatim; on Android the EditText
3
+ * setText resets the cursor to 0 on every controlled write. Park and
4
+ * restore the selection around the write (clamped to the new length so an
5
+ * append-shrink can't throw). iOS keeps the plain write — UITextField's
6
+ * text setter preserves the selected text range already.
7
+ * Returns without writing when the value already matches — the textChange
8
+ * echo of the user's own typing must not bounce back through setText. */
9
+ export function writeText(view: any, value: string | undefined | null): void {
10
+ const next = value ?? ''
11
+ if (!view || view.text === next) {
12
+ return
13
+ }
14
+
15
+ const et = view.android
16
+ if (!et) {
17
+ view.text = next
18
+ return
19
+ }
20
+
21
+ const start = et.getSelectionStart?.() ?? -1
22
+ const end = et.getSelectionEnd?.() ?? -1
23
+ view.text = next
24
+ if (start >= 0) {
25
+ const len = next.length
26
+ et.setSelection(Math.min(start, len), Math.min(end >= 0 ? end : start, len))
27
+ }
28
+ }
@@ -0,0 +1,13 @@
1
+ /** Web twin — controlled text writes are DOM value assignments; the browser
2
+ * keeps the selection on unchanged prefixes itself. Present for
3
+ * platform-suffix parity; the native leaves are the only callers. */
4
+ export function writeText(view: any, value: string | undefined | null): void {
5
+ if (!view) {
6
+ return
7
+ }
8
+
9
+ const next = value ?? ''
10
+ if (view.text !== next) {
11
+ view.text = next
12
+ }
13
+ }