@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,68 @@
1
+ /** @jsxImportSource @nativescript-community/octane */
2
+ import { useEffect, useRef } from 'octane';
3
+ import type { ModalProps } from "../props";
4
+ import { Frame, GridLayout } from '@nativescript/core';
5
+ import { createNativeScriptRoot } from '@nativescript-community/octane';
6
+ import type { UniversalComponent } from 'octane/universal';
7
+ import { applyThemeClasses } from '../theme/theme-scheme';
8
+ import { modalPresenter } from '../modal-presenter.mobile';
9
+
10
+ // The modal's content renders inside a separate Octane root on a GridLayout
11
+ // host — modals never share context with their presenter (decision #9).
12
+ // GridLayout because the root host must be multi-child: ContentView assigns
13
+ // each child to `.content`, so a fragment of siblings would keep only the
14
+ // last; grid children all fill the cell (single-child layout unchanged).
15
+ // Children arrive as an already-created element: element data evaluates in
16
+ // whichever root renders it, so re-parenting through the second root is safe.
17
+ function Panel(props: { children?: any }) @{
18
+ <>{props.children}</>
19
+ }
20
+
21
+ /** UIModal — declarative `open` drives the platform modal presentation
22
+ * (`showModal`; fullscreen=false is an iOS form sheet). Renders nothing
23
+ * inline; the content lives on the modal's own root above the whole tree.
24
+ * The shared `ui` surface has no Modal — `Overlay`/`Sheet` are the
25
+ * self-drawn in-window versions. */
26
+ export function UIModal(props: ModalProps) @{
27
+ const shown = useRef<{ host: GridLayout; root: any; unbindTheme?: () => void } | null>(null);
28
+
29
+ useEffect(() => {
30
+ if (props.open && !shown.current) {
31
+ const presenter = modalPresenter(Frame.topmost());
32
+ if (!presenter) {
33
+ // Dropped, not deferred: the effect only re-runs when props
34
+ // change, so warn loudly instead of silently swallowing open.
35
+ console.warn('[Modal] open dropped — no live presenter (currentPage mid-navigation or no active frame).');
36
+ return;
37
+ }
38
+
39
+ const host = new GridLayout();
40
+ const unbindTheme = applyThemeClasses(host, 'vx-modal-host');
41
+ const root = createNativeScriptRoot(host);
42
+ shown.current = { host, root, unbindTheme };
43
+ if (props.component) {
44
+ root.render(props.component as UniversalComponent, props.params ?? {});
45
+ } else {
46
+ root.render(Panel as unknown as UniversalComponent, { children: props.children });
47
+ }
48
+
49
+ // Signature is showModal(viewToShow, options) — not an options bag.
50
+ const fullscreen = props.presentation
51
+ ? props.presentation === 'fullscreen'
52
+ : props.fullscreen ?? true;
53
+
54
+ presenter.showModal(host, {
55
+ context: {},
56
+ closeCallback: (result?: unknown) => { shown.current?.unbindTheme?.(); shown.current = null; props.onClose?.(result); },
57
+ fullscreen,
58
+ animated: true,
59
+ });
60
+ } else if (!props.open && shown.current) {
61
+ const { host } = shown.current;
62
+ shown.current = null;
63
+ host.closeModal();
64
+ }
65
+ }, [props.open]);
66
+
67
+ <></>
68
+ }
@@ -0,0 +1,20 @@
1
+ /** @jsxImportSource @nativescript-community/octane */
2
+ import type { PlatformWidgetProps, SliderProps } from '../props';
3
+ import { cx } from '../cx';
4
+ import { applyNativeProps } from '../platformProps';
5
+
6
+ /** UISlider — the platform widget (UIKit UISlider via NativeScript `slider`).
7
+ * The self-drawn shared `Slider` lives in the root export. */
8
+ export function UISlider(props: PlatformWidgetProps<SliderProps>) @{
9
+ <slider
10
+ id={props.id}
11
+ className={cx(props.className)}
12
+ style={props.style}
13
+ value={props.value}
14
+ minValue={props.minValue ?? 0}
15
+ maxValue={props.maxValue ?? 100}
16
+ isEnabled={props.disabled ? false : true}
17
+ onValueChange={(e: any) => props.onValueChange?.(e.value)}
18
+ ref={(el: any) => applyNativeProps(el, props)}
19
+ />
20
+ }
@@ -0,0 +1,18 @@
1
+ /** @jsxImportSource @nativescript-community/octane */
2
+ import type { PlatformWidgetProps, SwitchProps } from "../props";
3
+ import { cx } from "../cx";
4
+ import { applyEscapeProps } from "../escape-props";
5
+
6
+ /** UISwitch — the platform widget (UIKit UISwitch via NativeScript `switch`).
7
+ * OS chrome is the point here; the self-drawn shared `Switch` lives in the
8
+ * root export. */
9
+ export function UISwitch(props: PlatformWidgetProps<SwitchProps>) @{
10
+ <switch
11
+ ref={(v: any) => applyEscapeProps(v, props)}
12
+ id={props.id}
13
+ className={cx(props.className)}
14
+ style={props.style}
15
+ checked={props.checked}
16
+ onCheckedChange={(e: any) => props.onCheckedChange?.(e.value)}
17
+ />
18
+ }
@@ -0,0 +1,172 @@
1
+ /** @jsxImportSource @nativescript-community/octane */
2
+ import { memo } from 'octane';
3
+ import { Frame, GridLayout, Page, TabView, TabViewItem } from '@nativescript/core';
4
+ import { createNativeScriptRoot } from '@nativescript-community/octane';
5
+ import type { UniversalComponent } from 'octane/universal';
6
+ import { registerStack } from '../stacks';
7
+ import { cx } from '../cx';
8
+ import { getIcon } from '../icons';
9
+ import type { PlatformTabSpec, PlatformTabsProps, PlatformWidgetProps } from '../props';
10
+ import { applyEscapeProps } from '../escape-props';
11
+
12
+ export type { PlatformTabSpec as TabSpec } from '../props';
13
+
14
+ // TabViewItem content is a plain native view — the driver can't parent
15
+ // reconciled children into <tabviewitem>, so each pane is a GridLayout
16
+ // hosting its own universal root (same shape as List cells). GridLayout,
17
+ // not ContentView: the host must be multi-child — a pane render producing
18
+ // more than one root view would keep only the last under `.content`
19
+ // assignment. Grid children all fill the cell, so single-child panes are
20
+ // unaffected.
21
+ type TabPaneProps = { render: () => any };
22
+ function TabPane(props: TabPaneProps) @{
23
+ <>{props.render()}</>
24
+ }
25
+
26
+ const paneRoots = new WeakMap<GridLayout, any>();
27
+ const tabsByView = new WeakMap<GridLayout, () => any>();
28
+ const itemsCache = new WeakMap<readonly PlatformTabSpec[], TabViewItem[]>();
29
+ const iconWarned = new Set<string>();
30
+
31
+ // Registered glyph → UITabBarItem image. `src` passes to iconSource
32
+ // verbatim (sys:// = SF Symbol, res://, font://, file path); `font` and
33
+ // `text` glyphs draw through font://. svg/markup can't become a UIImage
34
+ // synchronously — warn once, render title-only.
35
+ function applyIcon(item: TabViewItem, name: string): void {
36
+ if (name.startsWith('sys://') || name.startsWith('res://')) {
37
+ item.iconSource = name;
38
+ return;
39
+ }
40
+ const glyph = getIcon(name);
41
+ if (!glyph) {
42
+ warnIconOnce(name, `tab icon '${name}' isn't registered — call registerIcons() at boot.`);
43
+ return;
44
+ }
45
+
46
+ if (glyph.src) {
47
+ item.iconSource = glyph.src;
48
+ } else if (glyph.font) {
49
+ item.iconSource = 'font://' + glyph.font.glyph;
50
+ item.iconFontFamily = glyph.font.family;
51
+ } else if (glyph.text) {
52
+ // font:// with no iconFontFamily draws through the default font.
53
+ item.iconSource = 'font://' + glyph.text;
54
+ } else {
55
+ warnIconOnce(
56
+ name,
57
+ `tab icon '${name}' has no src/font/text representation — UITabBarItem can't render svg/markup glyphs.`,
58
+ );
59
+ }
60
+ }
61
+
62
+ function warnIconOnce(name: string, msg: string): void {
63
+ if (iconWarned.has(name)) return;
64
+ iconWarned.add(name);
65
+ console.warn('[octane-xplat] ' + msg);
66
+ }
67
+
68
+ function itemsFor(tabs: readonly PlatformTabSpec[]): TabViewItem[] {
69
+ let items = itemsCache.get(tabs);
70
+ if (items !== undefined) return items;
71
+ items = tabs.map((t) => {
72
+ const item = new TabViewItem();
73
+ item.title = t.title;
74
+ if (t.icon != null) applyIcon(item, t.icon);
75
+ if (t.stack) {
76
+ // Parallel-stack pane: the item's view IS a Frame whose default
77
+ // page hosts the pane's own Octane root. Pushes land inside the
78
+ // tab; the tab bar stays visible.
79
+ // Navigate on `loaded`, not eagerly: a navigate issued before the
80
+ // frame enters the window hierarchy leaves _executingContext
81
+ // stuck (iOS's delegate never sees didShow) and every later push
82
+ // queues forever.
83
+ const frame = new Frame();
84
+ frame.once('loaded', () => {
85
+ frame.navigate({
86
+ create: () => {
87
+ const page = new Page();
88
+ page.actionBarHidden = true;
89
+ // Page is a ContentView — single-child. Root on a
90
+ // GridLayout child for the same multi-child guarantee.
91
+ const pane = new GridLayout();
92
+ page.content = pane;
93
+ createNativeScriptRoot(pane).render(
94
+ TabPane as unknown as UniversalComponent, { render: t.render });
95
+
96
+ return page;
97
+ },
98
+ });
99
+ });
100
+
101
+ registerStack(t.stack, frame);
102
+ item.view = frame;
103
+ return item;
104
+ }
105
+
106
+ const cv = new GridLayout();
107
+ tabsByView.set(cv, t.render);
108
+ item.view = cv;
109
+ return item;
110
+ });
111
+
112
+ itemsCache.set(tabs, items);
113
+ return items;
114
+ }
115
+
116
+ // Panes mount lazily: a pane view that isn't loaded yet would render into
117
+ // nothing — mount on the tabview's loaded event, all at once.
118
+ function mountPanes(e: any) {
119
+ const tv = e.object as TabView;
120
+ for (const item of tv.items as TabViewItem[]) {
121
+ const cv = item.view as GridLayout;
122
+ if (!(cv instanceof GridLayout) || paneRoots.has(cv)) continue;
123
+ const render = tabsByView.get(cv);
124
+ if (!render) continue;
125
+ const root = createNativeScriptRoot(cv);
126
+ paneRoots.set(cv, root);
127
+ root.render(TabPane as unknown as UniversalComponent, { render });
128
+ }
129
+ }
130
+
131
+ function TabBarInner(props: {
132
+ className?: any;
133
+ style?: any;
134
+ id?: string;
135
+ tabs: readonly PlatformTabSpec[];
136
+ selectedIndex?: number;
137
+ onSelectedIndexChanged?: (index: number) => void;
138
+ ios?: Record<string, any>;
139
+ modifiers?: PlatformWidgetProps<PlatformTabsProps>['modifiers'];
140
+ }) @{
141
+ <tabview
142
+ ref={(v: any) => applyEscapeProps(v, props)}
143
+ id={props.id}
144
+ className={cx(props.className)}
145
+ style={props.style}
146
+ items={itemsFor(props.tabs)}
147
+ selectedIndex={props.selectedIndex}
148
+ onSelectedIndexChanged={(e: any) => props.onSelectedIndexChanged?.(e.value)}
149
+ onLoaded={mountPanes}
150
+ />
151
+ }
152
+
153
+ // Memoized on the tabs array — TabView.item writes rebuild the native
154
+ // structure, and the driver re-applies props every render.
155
+ const MemoTabBar = memo(TabBarInner, (a, b) => a.tabs === b.tabs && a.selectedIndex === b.selectedIndex && a.modifiers === b.modifiers);
156
+
157
+ /** UITabBar — the platform tab bar (UIKit UITabBarController-backed TabView).
158
+ * Real per-pane Frames: each `stack` tab keeps a native navigation stack
159
+ * inside its pane. The self-drawn shared `Tabs` lives in the root export.
160
+ * `tabs` is identity-stable (module const preferred). */
161
+ export function UITabBar(props: PlatformWidgetProps<PlatformTabsProps>) @{
162
+ <MemoTabBar
163
+ id={props.id}
164
+ className={props.className}
165
+ style={props.style}
166
+ tabs={props.tabs}
167
+ selectedIndex={props.selectedIndex}
168
+ ios={props.ios}
169
+ onSelectedIndexChanged={props.onSelectedIndexChanged}
170
+ modifiers={props.modifiers}
171
+ />
172
+ }
@@ -0,0 +1,186 @@
1
+ /** @jsxImportSource @nativescript-community/octane */
2
+ // Universal hooks import from 'octane' — the compiler retargets them to the
3
+ // nativescript runtime, and the dev server serves them via HTTP-ESM.
4
+ import { memo, useEffect, useRef } from 'octane';
5
+ import { ScrollView } from '@nativescript/core';
6
+ import type { ListProps, PlatformWidgetProps } from "../props";
7
+ import type { RefreshConfig, RefreshController } from '../refresh';
8
+ import { cx } from "../cx";
9
+ import { ActivityIndicator } from '../ActivityIndicator.tsrx';
10
+ import { applyEscapeProps } from '../escape-props';
11
+ import { REFRESH_HEADER_HEIGHT } from '../refresh-metrics';
12
+ import { createPullToRefresh } from '../refresh';
13
+
14
+ function rejectNestedScrollView(event: any) {
15
+ let parent = event.object?.parent;
16
+ while (parent) {
17
+ if (parent instanceof ScrollView) {
18
+ throw new Error('[UITableView] cannot be nested inside native ScrollView. Use ScrollBox so the list owns scrolling.');
19
+ }
20
+
21
+ parent = parent.parent;
22
+ }
23
+ }
24
+
25
+ /** Stable ref bag across the memo boundary — refresh callbacks are fresh
26
+ * closures each parent render, so the props live behind refs and the
27
+ * memo compare just sees the same bag. */
28
+ interface RefreshBag {
29
+ cfg: { current: RefreshConfig };
30
+ indicator: { current: any };
31
+ ctl: { current: RefreshController | null };
32
+ }
33
+
34
+ // Cell machinery is driver-owned since @nativescript-community/octane 0.2.1
35
+ // (upstream #7, closes our issue #1): `renderItem` on <listview> makes
36
+ // itemTemplate vend a ContentView per recycled cell, each with its own
37
+ // universal root; itemLoading binds items[index] and skips unchanged rows;
38
+ // a changed renderItem re-binds live cells; discard unmounts the roots.
39
+ // The cell ContentView is single-child — a renderItem returning multiple
40
+ // roots would silently drop siblings — so output wraps in a gridlayout.
41
+ function UITableViewInner(props: {
42
+ className?: any;
43
+ style?: any;
44
+ id?: string;
45
+ items: any[];
46
+ renderItem: (item: any, index: number) => any;
47
+ estimatedItemHeight?: number;
48
+ onEndReached?: () => void;
49
+ ios?: Record<string, any>;
50
+ modifiers?: PlatformWidgetProps<ListProps>['modifiers'];
51
+ refresh?: RefreshBag;
52
+ }) @{
53
+ const lv = useRef<any>(null);
54
+ useEffect(() => {
55
+ const bag = props.refresh;
56
+ if (!bag || !lv.current) return;
57
+ bag.ctl.current = createPullToRefresh({
58
+ scroller: lv.current,
59
+ indicator: bag.indicator.current,
60
+ isAtTop: () => true, // iOS reads contentOffset directly — unused
61
+ cfg: bag.cfg,
62
+ });
63
+
64
+ return () => {
65
+ bag.ctl.current?.detach();
66
+ bag.ctl.current = null;
67
+ };
68
+ }, []);
69
+
70
+ <listview
71
+ ref={(v: any) => {
72
+ lv.current = v;
73
+ applyEscapeProps(v, props);
74
+ }}
75
+ id={props.id}
76
+ className={cx(props.className)}
77
+ style={props.style}
78
+ items={props.items}
79
+ iosEstimatedRowHeight={props.estimatedItemHeight}
80
+ onLoadMoreItems={props.onEndReached}
81
+ onLoaded={rejectNestedScrollView}
82
+ renderItem={(item: any, index: number) => <gridlayout>{props.renderItem(item, index)}</gridlayout>}
83
+ {...props.ios}
84
+ />
85
+ }
86
+
87
+ // The listview subtree is memoized on `items` and list configuration: the
88
+ // universal driver re-applies props on every render (no value diffing), and
89
+ // each write can trigger view-level side effects — measured: every unrelated
90
+ // parent re-render refired itemLoading for all visible cells. Memoized on the
91
+ // items reference and list configuration, unrelated parent re-renders skip
92
+ // this subtree. Constraint: `renderItem` should be identity-stable (a
93
+ // useCallback-style ref) — a fresh closure each render is deliberately
94
+ // not part of the compare. (`UITableViewInner` must precede this — compiled
95
+ // components are consts, not hoisted functions.)
96
+ const MemoListView = memo(UITableViewInner, (a, b) =>
97
+ a.items === b.items &&
98
+ a.className === b.className &&
99
+ a.style === b.style &&
100
+ a.id === b.id &&
101
+ a.estimatedItemHeight === b.estimatedItemHeight &&
102
+ a.onEndReached === b.onEndReached &&
103
+ a.ios === b.ios &&
104
+ a.modifiers === b.modifiers &&
105
+ a.refresh === b.refresh
106
+ );
107
+
108
+ /** UITableView — the platform recycling list (UIKit UITableView via
109
+ * NativeScript `listview`). `items` is a plain array, ItemsSource, or
110
+ * ObservableArray — the driver binds `items[index]` into the recycled
111
+ * cell's root and skips rebinds whose row, item, and renderer are
112
+ * unchanged. Cell identity = the recycled host view, not the item.
113
+ * The shared `ui` export has no List — compose ScrollView + mapped
114
+ * children there.
115
+ *
116
+ * `refreshing`/`onRefresh`/`refreshThreshold` enable pull-to-refresh:
117
+ * the indicator is self-drawn (vx-spinner), the pull rides UITableView's
118
+ * own bounce, and the docked phase holds via contentInset — the same
119
+ * mechanics UIRefreshControl uses, without its OS spinner. */
120
+ export function UITableView(props: PlatformWidgetProps<ListProps>) @{
121
+ const refreshCapable = props.onRefresh != null || props.refreshing != null;
122
+ const cfg = useRef<RefreshConfig>({});
123
+ cfg.current = {
124
+ onRefresh: props.onRefresh,
125
+ refreshing: props.refreshing,
126
+ threshold: props.refreshThreshold,
127
+ };
128
+
129
+ const indicator = useRef<any>(null);
130
+ const ctl = useRef<RefreshController | null>(null);
131
+ const refresh = useRef<RefreshBag>({ cfg, indicator, ctl });
132
+
133
+ useEffect(() => {
134
+ ctl.current?.sync();
135
+ }, [props.refreshing]);
136
+
137
+ @if (props.items.length > 0) {
138
+ @if (refreshCapable) {
139
+ <gridlayout
140
+ ref={(v: any) => {
141
+ // iOS doesn't clip children — the resting indicator sits
142
+ // translated above the wrapper's top edge without it.
143
+ if (v?.ios) v.ios.clipsToBounds = true;
144
+ }}
145
+ className={cx('vx-refresh-wrap', props.className)}
146
+ style={props.style}
147
+ >
148
+ <MemoListView
149
+ id={props.id}
150
+ items={props.items}
151
+ renderItem={props.renderItem}
152
+ estimatedItemHeight={props.estimatedItemHeight}
153
+ onEndReached={props.onEndReached}
154
+ ios={props.ios}
155
+ modifiers={props.modifiers}
156
+ refresh={refresh.current}
157
+ />
158
+ <flexboxlayout
159
+ ref={(v: any) => {
160
+ indicator.current = v;
161
+ }}
162
+ className="vx-refresh"
163
+ verticalAlignment="top"
164
+ height={REFRESH_HEADER_HEIGHT}
165
+ translateY={-REFRESH_HEADER_HEIGHT}
166
+ >
167
+ <ActivityIndicator />
168
+ </flexboxlayout>
169
+ </gridlayout>
170
+ } @else {
171
+ <MemoListView
172
+ id={props.id}
173
+ items={props.items}
174
+ className={props.className}
175
+ style={props.style}
176
+ renderItem={props.renderItem}
177
+ estimatedItemHeight={props.estimatedItemHeight}
178
+ onEndReached={props.onEndReached}
179
+ ios={props.ios}
180
+ modifiers={props.modifiers}
181
+ />
182
+ }
183
+ } @else {
184
+ <>{props.renderEmpty?.()}</>
185
+ }
186
+ }
@@ -0,0 +1,8 @@
1
+ import type { PlatformIconChoice } from '../props'
2
+
3
+ /** Selector for glyphs used by iOS-authentic widgets; the shared root Icon is unchanged. */
4
+ export const Icon = {
5
+ select(choice: PlatformIconChoice): string {
6
+ return choice.ios.startsWith('sys://') ? choice.ios : `sys://${choice.ios}`
7
+ },
8
+ }
@@ -0,0 +1,42 @@
1
+ // @octane-xplat/ui/ios — iOS-authentic widgets. OS chrome is the point:
2
+ // these resolve only in native builds (the `ui/ios` subpath has no `web`
3
+ // export condition). Use inside `.ios.tsrx`/`.mobile.tsrx` files, or behind
4
+ // `isIOS` in native-default code — a shared `.tsrx` that imports this path fails
5
+ // the web build on purpose.
6
+
7
+ export { UISwitch } from './UISwitch.ios.tsrx'
8
+ export { UISlider } from './UISlider.ios.tsrx'
9
+ export { UIActivityIndicatorView } from './UIActivityIndicatorView.ios.tsrx'
10
+ export { UITableView } from './UITableView.ios.tsrx'
11
+ export { UITabBar } from './UITabBar.ios.tsrx'
12
+ export type { PlatformTabSpec as TabSpec } from '../props'
13
+ export { UIModal } from './UIModal.ios.tsrx'
14
+ export { openModal } from './openModal.ios'
15
+ export { SideDrawer } from './SideDrawer.ios.tsrx'
16
+ export { LiquidGlass } from './LiquidGlass.ios.tsrx'
17
+ export { LiquidGlassContainer } from './LiquidGlassContainer.ios.tsrx'
18
+ export { Icon } from './icon.ios'
19
+ export { modifier } from '../modifier-factories'
20
+
21
+ export type {
22
+ SwitchProps,
23
+ SliderProps,
24
+ ActivityIndicatorProps,
25
+ ListProps,
26
+ TabsProps,
27
+ ModalProps,
28
+ ModalOpenOptions,
29
+ ModalOpenResult,
30
+ OpenModal,
31
+ DrawerProps,
32
+ LiquidGlassProps,
33
+ LiquidGlassContainerProps,
34
+ GlassConfig,
35
+ NativeModifier,
36
+ NativeModifierValue,
37
+ PlatformIconChoice,
38
+ PlatformTabSpec,
39
+ PlatformTabsProps,
40
+ PlatformWidgetProps,
41
+ RefreshProps,
42
+ } from '../props'
@@ -0,0 +1,55 @@
1
+ import { Frame, GridLayout } from '@nativescript/core'
2
+ import { createNativeScriptRoot } from '@nativescript-community/octane'
3
+ import type { UniversalComponent } from 'octane/universal'
4
+ import type { ModalOpenOptions, ModalOpenResult, OpenModal } from '../props'
5
+ import { applyThemeClasses } from '../theme/theme-scheme'
6
+ import { modalPresenter } from '../modal-presenter.mobile'
7
+
8
+ /** Open a component in its own NativeScript modal root and resolve on close. */
9
+ export const openModal: OpenModal = (Component, params, options = {}) =>
10
+ new Promise<ModalOpenResult>((resolve, reject) => {
11
+ const presenter = modalPresenter(Frame.topmost())
12
+ if (!presenter) {
13
+ reject(
14
+ new Error(
15
+ 'openModal dropped — no live presenter. The topmost frame has no loaded currentPage (a page mid-navigation), or no frame is active yet.',
16
+ ),
17
+ )
18
+
19
+ return
20
+ }
21
+
22
+ const host = new GridLayout()
23
+ const unbindTheme = applyThemeClasses(host, 'vx-modal-host')
24
+ const root = createNativeScriptRoot(host) as any
25
+ let finished = false
26
+ const finish = (result?: ModalOpenResult) => {
27
+ if (finished) {
28
+ return
29
+ }
30
+
31
+ finished = true
32
+ unbindTheme()
33
+ root.unmount?.()
34
+ host.removeChildren?.()
35
+ resolve(result)
36
+ }
37
+
38
+ const close = (result?: ModalOpenResult) => host.closeModal(result)
39
+ root.render(Component as UniversalComponent, { params, close })
40
+
41
+ const fullscreen = options.presentation
42
+ ? options.presentation === 'fullscreen'
43
+ : (options.fullscreen ?? true)
44
+
45
+ // showModal takes (viewToShow, options). On iOS fullscreen=false is a
46
+ // form sheet.
47
+ presenter.showModal(host, {
48
+ context: {},
49
+ closeCallback: finish,
50
+ fullscreen,
51
+ animated: options.animated ?? true,
52
+ })
53
+ })
54
+
55
+ export type { ModalOpenOptions }
@@ -0,0 +1,89 @@
1
+ import { Application } from '@nativescript/core';
2
+
3
+ // One shared observer tracks the keyboard's current bottom inset — a sheet
4
+ // opened while the keyboard is ALREADY up must lift immediately (a
5
+ // WillChangeFrame observer only learns about changes after binding), and a
6
+ // focused field keeps the inset live across sheet swaps.
7
+ const bound = new Set<any>();
8
+ let inset = 0;
9
+ let wired = false;
10
+
11
+ const apply = () => {
12
+ bound.forEach((host) => {
13
+ host.translateY = -inset;
14
+ });
15
+ };
16
+
17
+
18
+ const wireIos = () => {
19
+ if (wired) { return; }
20
+ wired = true;
21
+ NSNotificationCenter.defaultCenter.addObserverForNameObjectQueueUsingBlock(
22
+ UIKeyboardWillChangeFrameNotification,
23
+ null,
24
+ NSOperationQueue.mainQueue,
25
+ (note: any) => {
26
+ // UIKeyboardFrameEndUserInfoKey arrives boxed as NSValue whose
27
+ // `CGRectValue` marshals to a plain CGRect object (not a call).
28
+ const raw = note.userInfo.objectForKey(UIKeyboardFrameEndUserInfoKey);
29
+ const boxed = raw?.CGRectValue;
30
+ const frame = typeof boxed === 'function' ? raw.CGRectValue() : (boxed ?? raw);
31
+ inset = Math.max(0, UIScreen.mainScreen.bounds.size.height - (frame?.origin?.y ?? UIScreen.mainScreen.bounds.size.height));
32
+ apply();
33
+ },
34
+ );
35
+ };
36
+
37
+ /** Lift a bottom-anchored overlay host above the software keyboard.
38
+ * iOS: a shared UIKeyboardWillChangeFrame observer tracks the inset and
39
+ * translateY shifts the host — reliable on popup views regardless of how
40
+ * the RootLayout passes margins through. The current inset is applied at
41
+ * bind time so hosts opened over an already-visible keyboard still lift.
42
+ * Android: when the window runs `adjustResize` (KeyboardAvoiding sets it)
43
+ * the RootLayout resizes and the host follows on its own; otherwise the
44
+ * decor view's IME inset supplies the lift. Returns an unbind that
45
+ * restores the transform — call it when the host detaches. */
46
+ export function bindBottomInsetToKeyboard(host: any): () => void {
47
+ if (Application.ios) {
48
+ wireIos();
49
+ bound.add(host);
50
+ host.translateY = -inset;
51
+ return () => {
52
+ bound.delete(host);
53
+ host.translateY = 0;
54
+ };
55
+ }
56
+
57
+ if (Application.android) {
58
+ const nativeWindow = Application.android.foregroundActivity?.window;
59
+ if (!nativeWindow) { return () => {}; }
60
+ const params = (globalThis as any).android?.view?.WindowManager?.LayoutParams;
61
+ if (!params) { return () => {}; }
62
+ // adjustResize resizes the RootLayout for us — an extra offset would
63
+ // double-lift the host.
64
+ if ((nativeWindow.attributes.softInputMode & params.SOFT_INPUT_MASK_ADJUST) === params.SOFT_INPUT_ADJUST_RESIZE) {
65
+ return () => {};
66
+ }
67
+
68
+ const ViewCompat = (globalThis as any).androidx?.core?.view?.ViewCompat;
69
+ const WindowInsetsCompat = (globalThis as any).androidx?.core?.view?.WindowInsetsCompat;
70
+ if (!ViewCompat || !WindowInsetsCompat) { return () => {}; }
71
+ const decorView = nativeWindow.decorView;
72
+ const listener = new ViewCompat.OnApplyWindowInsetsListener({
73
+ onApplyWindowInsets: (v: any, insets: any) => {
74
+ const ime = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom;
75
+ const nav = insets.getInsets(WindowInsetsCompat.Type.systemBars()).bottom;
76
+ host.translateY = -Math.max(0, ime - nav);
77
+ return insets;
78
+ },
79
+ });
80
+
81
+ ViewCompat.setOnApplyWindowInsetsListener(decorView, listener);
82
+ return () => {
83
+ host.translateY = 0;
84
+ ViewCompat.setOnApplyWindowInsetsListener(decorView, null);
85
+ };
86
+ }
87
+
88
+ return () => {};
89
+ }