@octane-xplat/ui 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (893) hide show
  1. package/README.md +17 -4
  2. package/dist/native/Absolute.tsrx.js +43 -0
  3. package/dist/native/Accordion.tsrx.js +75 -0
  4. package/dist/native/ActivityIndicator.tsrx.js +35 -0
  5. package/dist/native/Alert.tsrx.js +74 -0
  6. package/dist/native/Avatar.tsrx.js +76 -0
  7. package/dist/native/AvatarGroup.tsrx.js +84 -0
  8. package/dist/native/Badge.tsrx.js +29 -0
  9. package/dist/native/Banner.tsrx.js +80 -0
  10. package/dist/native/Breadcrumb.tsrx.js +66 -0
  11. package/dist/native/Button.tsrx.js +62 -0
  12. package/dist/native/Card.tsrx.js +64 -0
  13. package/dist/native/Checkbox.tsrx.js +58 -0
  14. package/dist/native/CheckboxGroup.tsrx.js +70 -0
  15. package/dist/native/Chip.tsrx.js +83 -0
  16. package/dist/native/Collapsible.tsrx.js +74 -0
  17. package/dist/native/CommandPalette.tsrx.js +143 -0
  18. package/dist/native/ContextMenu.tsrx.js +140 -0
  19. package/dist/native/Drawer.tsrx.js +60 -0
  20. package/dist/native/DropdownMenu.tsrx.js +155 -0
  21. package/dist/native/Empty.tsrx.js +82 -0
  22. package/dist/native/FieldGroup.tsrx.js +39 -0
  23. package/dist/native/FormField.tsrx.js +53 -0
  24. package/dist/native/{ui8.js → Grid.tsrx.js} +20 -9
  25. package/dist/native/{ui59.js → Heading.tsrx.js} +4 -4
  26. package/dist/native/Hoverable.tsrx.js +139 -0
  27. package/dist/native/{ui58.js → Icon.tsrx.js} +5 -5
  28. package/dist/native/{ui29.js → Image.tsrx.js} +5 -5
  29. package/dist/native/InputNumber.tsrx.js +146 -0
  30. package/dist/native/InputRating.tsrx.js +74 -0
  31. package/dist/native/InputTags.tsrx.js +131 -0
  32. package/dist/native/Kbd.tsrx.js +29 -0
  33. package/dist/native/{ui50.js → KeyboardAvoiding.mobile.tsrx.js} +6 -4
  34. package/dist/native/{ui17.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/{ui22.js → NavLink.tsrx.js} +4 -4
  38. package/dist/native/NavigationMenu.tsrx.js +67 -0
  39. package/dist/native/{ui35.js → Overlay.tsrx.js} +4 -4
  40. package/dist/native/Pagination.tsrx.js +107 -0
  41. package/dist/native/PinInput.tsrx.js +94 -0
  42. package/dist/native/{ui38.js → Popover.tsrx.js} +7 -7
  43. package/dist/native/{ui16.js → Pressable.tsrx.js} +21 -15
  44. package/dist/native/ProgressGroup.tsrx.js +66 -0
  45. package/dist/native/RadioGroup.tsrx.js +85 -0
  46. package/dist/native/{ui15.js → RichText.tsrx.js} +16 -23
  47. package/dist/native/{ui20.js → RouteHost.mobile.tsrx.js} +13 -2
  48. package/dist/native/Row.tsrx.js +98 -0
  49. package/dist/native/{ui49.js → SafeArea.tsrx.js} +10 -4
  50. package/dist/native/{ui45.js → Screen.tsrx.js} +14 -6
  51. package/dist/native/{ui26.js → ScrollBox.tsrx.js} +2 -2
  52. package/dist/native/ScrollView.tsrx.js +233 -0
  53. package/dist/native/SearchInput.tsrx.js +151 -0
  54. package/dist/native/SegmentedControl.tsrx.js +75 -0
  55. package/dist/native/Select.tsrx.js +202 -0
  56. package/dist/native/Separator.tsrx.js +25 -0
  57. package/dist/native/{ui63.js → Sheet.tsrx.js} +24 -8
  58. package/dist/native/Skeleton.tsrx.js +28 -0
  59. package/dist/native/Slider.tsrx.js +98 -0
  60. package/dist/native/{ui13.js → Spacer.tsrx.js} +3 -3
  61. package/dist/native/Stack.tsrx.js +47 -0
  62. package/dist/native/Stepper.tsrx.js +75 -0
  63. package/dist/native/Switch.tsrx.js +33 -0
  64. package/dist/native/Table.tsrx.js +103 -0
  65. package/dist/native/Tabs.tsrx.js +153 -0
  66. package/dist/native/{ui14.js → Text.tsrx.js} +5 -4
  67. package/dist/native/{ui24.js → TextArea.tsrx.js} +18 -17
  68. package/dist/native/{ui23.js → TextInput.tsrx.js} +22 -17
  69. package/dist/native/Timeline.tsrx.js +112 -0
  70. package/dist/native/Tooltip.tsrx.js +131 -0
  71. package/dist/native/Tree.tsrx.js +140 -0
  72. package/dist/native/User.tsrx.js +95 -0
  73. package/dist/native/View.tsrx.js +98 -0
  74. package/dist/native/VirtualList.tsrx.js +466 -0
  75. package/dist/native/WebView.tsrx.js +135 -0
  76. package/dist/native/aliases.tsrx.js +38 -0
  77. package/dist/native/android/BottomNavigationView.android.tsrx.js +220 -0
  78. package/dist/native/android/CircularProgressIndicator.android.tsrx.js +27 -0
  79. package/dist/native/{ui51.js → android/DrawerLayout.android.tsrx.js} +6 -7
  80. package/dist/native/android/MaterialDialog.android.tsrx.js +62 -0
  81. package/dist/native/android/MaterialSwitch.android.tsrx.js +28 -0
  82. package/dist/native/android/RecyclerView.android.tsrx.js +260 -0
  83. package/dist/native/android/SeekBar.android.tsrx.js +34 -0
  84. package/dist/native/android/icon.android.js +7 -0
  85. package/dist/native/android/index.js +11 -0
  86. package/dist/native/android/openModal.android.js +39 -0
  87. package/dist/native/{ui41.js → anim.tsrx.js} +1 -1
  88. package/dist/native/apply-native-modifiers.native.js +9 -0
  89. package/dist/native/child-array.js +15 -0
  90. package/dist/native/{ui3.js → escape-props.js} +3 -1
  91. package/dist/native/icons.js +25 -0
  92. package/dist/native/index.shared.js +92 -0
  93. package/dist/native/{ui11.js → ios/LiquidGlass.ios.tsrx.js} +4 -4
  94. package/dist/native/{ui12.js → ios/LiquidGlassContainer.ios.tsrx.js} +4 -4
  95. package/dist/native/ios/SideDrawer.ios.tsrx.js +65 -0
  96. package/dist/native/{ui53.js → ios/UIActivityIndicatorView.ios.tsrx.js} +5 -5
  97. package/dist/native/{ui32.js → ios/UIModal.ios.tsrx.js} +10 -6
  98. package/dist/native/{ui56.js → ios/UISlider.ios.tsrx.js} +5 -5
  99. package/dist/native/{ui47.js → ios/UISwitch.ios.tsrx.js} +5 -5
  100. package/dist/native/ios/UITabBar.ios.tsrx.js +187 -0
  101. package/dist/native/ios/UITableView.ios.tsrx.js +282 -0
  102. package/dist/native/ios/icon.ios.js +7 -0
  103. package/dist/native/ios/index.js +13 -0
  104. package/dist/native/{ui33.js → ios/openModal.ios.js} +5 -4
  105. package/dist/native/keyboard-inset.mobile.js +66 -0
  106. package/dist/native/{ui5.js → layout-child.js} +1 -1
  107. package/dist/native/modal-presenter.mobile.js +19 -0
  108. package/dist/native/modifier-factories.js +24 -0
  109. package/dist/native/native/index.js +4 -0
  110. package/dist/native/octane-client-build.json +1 -1
  111. package/dist/native/{ui6.js → pan.tsrx.js} +9 -69
  112. package/dist/native/platform.js +10 -0
  113. package/dist/native/{ui36.js → platformProps.js} +3 -1
  114. package/dist/native/refresh-metrics.js +9 -0
  115. package/dist/native/refresh.js +177 -0
  116. package/dist/native/{ui34.js → root-layout.mobile.js} +8 -3
  117. package/dist/native/route-host.mobile.js +2 -0
  118. package/dist/native/{ui19.js → route-table.js} +105 -4
  119. package/dist/native/{ui21.js → route.js} +140 -20
  120. package/dist/native/safeAreaInsets.tsrx.js +67 -0
  121. package/dist/native/shared.js +93 -0
  122. package/dist/native/sheet-detents.js +102 -0
  123. package/dist/native/{ui64.js → sheet-service.js} +26 -10
  124. package/dist/native/sheet-snap.js +35 -0
  125. package/dist/native/{ui18.js → stacks.js} +1 -1
  126. package/dist/native/{ui43.js → styled.tsrx.js} +1 -1
  127. package/dist/native/{ui28.js → svg.mobile.js} +2 -2
  128. package/dist/native/tap-to-blur.mobile.js +94 -0
  129. package/dist/native/text-write.js +27 -0
  130. package/dist/native/{ui30.js → theme/colorScheme.js} +2 -2
  131. package/dist/native/{ui42.js → theme/status-bar-scheme.mobile.js} +3 -3
  132. package/dist/{web/ui29.js → native/theme/theme-scheme.js} +3 -3
  133. package/dist/native/{ui40.js → toast-anchor.tsrx.js} +4 -4
  134. package/dist/native/translate.js +11 -0
  135. package/dist/native/ui.js +95 -55
  136. package/dist/native/use-back.tsrx.js +9 -0
  137. package/dist/native/{ui62.js → use-store.tsrx.js} +1 -1
  138. package/dist/native/{ui52.js → useMeasure.tsrx.js} +2 -2
  139. package/dist/native/vendor/ui-svg/index.android.js +137 -0
  140. package/dist/native/vendor/ui-svg/index.common.js +10 -0
  141. package/dist/native/vendor/ui-svg/index.ios.js +111 -0
  142. package/dist/native/virtual-list-layout.js +146 -0
  143. package/dist/native/{ui44.js → windows.js} +1 -1
  144. package/dist/web/Absolute.web.tsrx.js +47 -0
  145. package/dist/web/Accordion.web.tsrx.js +85 -0
  146. package/dist/web/{ui48.js → ActivityIndicator.web.tsrx.js} +1 -1
  147. package/dist/web/Alert.web.tsrx.js +79 -0
  148. package/dist/web/Avatar.web.tsrx.js +106 -0
  149. package/dist/web/AvatarGroup.web.tsrx.js +108 -0
  150. package/dist/web/Badge.web.tsrx.js +37 -0
  151. package/dist/web/Banner.web.tsrx.js +79 -0
  152. package/dist/web/Breadcrumb.web.tsrx.js +135 -0
  153. package/dist/web/Button.web.tsrx.js +45 -0
  154. package/dist/web/Card.web.tsrx.js +73 -0
  155. package/dist/web/Checkbox.web.tsrx.js +89 -0
  156. package/dist/web/CheckboxGroup.web.tsrx.js +79 -0
  157. package/dist/web/Chip.web.tsrx.js +64 -0
  158. package/dist/web/Collapsible.web.tsrx.js +94 -0
  159. package/dist/web/CommandPalette.web.tsrx.js +125 -0
  160. package/dist/web/ContextMenu.web.tsrx.js +154 -0
  161. package/dist/web/{ui45.js → Drawer.web.tsrx.js} +13 -9
  162. package/dist/web/DropdownMenu.web.tsrx.js +162 -0
  163. package/dist/web/Empty.web.tsrx.js +89 -0
  164. package/dist/web/FieldGroup.web.tsrx.js +57 -0
  165. package/dist/web/FormField.web.tsrx.js +92 -0
  166. package/dist/web/Grid.web.tsrx.js +65 -0
  167. package/dist/web/{ui54.js → Heading.web.tsrx.js} +2 -2
  168. package/dist/web/{ui34.js → Hoverable.web.tsrx.js} +6 -5
  169. package/dist/web/{ui53.js → Icon.web.tsrx.js} +2 -2
  170. package/dist/web/{ui25.js → Image.web.tsrx.js} +2 -2
  171. package/dist/web/InputNumber.web.tsrx.js +99 -0
  172. package/dist/web/InputRating.web.tsrx.js +72 -0
  173. package/dist/web/InputTags.web.tsrx.js +122 -0
  174. package/dist/web/Kbd.web.tsrx.js +37 -0
  175. package/dist/web/ListItem.web.tsrx.js +139 -0
  176. package/dist/web/{ui50.js → Meter.web.tsrx.js} +1 -1
  177. package/dist/web/{ui19.js → NavLink.web.tsrx.js} +1 -1
  178. package/dist/web/NavigationMenu.web.tsrx.js +118 -0
  179. package/dist/web/{ui31.js → Overlay.web.tsrx.js} +2 -2
  180. package/dist/web/Pagination.web.tsrx.js +80 -0
  181. package/dist/web/PinInput.web.tsrx.js +72 -0
  182. package/dist/web/{ui33.js → Popover.web.tsrx.js} +3 -3
  183. package/dist/web/{ui15.js → Pressable.web.tsrx.js} +68 -95
  184. package/dist/web/ProgressGroup.web.tsrx.js +109 -0
  185. package/dist/web/RadioGroup.web.tsrx.js +69 -0
  186. package/dist/web/{ui14.js → RichText.web.tsrx.js} +2 -2
  187. package/dist/web/Row.web.tsrx.js +250 -0
  188. package/dist/web/{ui43.js → SafeArea.web.tsrx.js} +10 -4
  189. package/dist/web/{ui39.js → Screen.web.tsrx.js} +1 -1
  190. package/dist/web/{ui24.js → ScrollBox.web.tsrx.js} +1 -1
  191. package/dist/web/ScrollView.web.tsrx.js +388 -0
  192. package/dist/web/SearchInput.web.tsrx.js +137 -0
  193. package/dist/web/SegmentedControl.web.tsrx.js +75 -0
  194. package/dist/web/Select.web.tsrx.js +149 -0
  195. package/dist/web/Separator.web.tsrx.js +42 -0
  196. package/dist/web/Sheet.web.tsrx.js +81 -0
  197. package/dist/web/Skeleton.web.tsrx.js +56 -0
  198. package/dist/web/Slider.web.tsrx.js +97 -0
  199. package/dist/web/{ui12.js → Spacer.web.tsrx.js} +1 -1
  200. package/dist/web/Stack.web.tsrx.js +47 -0
  201. package/dist/web/Stepper.web.tsrx.js +65 -0
  202. package/dist/web/Switch.web.tsrx.js +59 -0
  203. package/dist/web/Table.web.tsrx.js +161 -0
  204. package/dist/web/Tabs.web.tsrx.js +215 -0
  205. package/dist/web/{ui13.js → Text.web.tsrx.js} +18 -50
  206. package/dist/web/{ui21.js → TextArea.web.tsrx.js} +4 -4
  207. package/dist/web/{ui20.js → TextInput.web.tsrx.js} +8 -8
  208. package/dist/web/Timeline.web.tsrx.js +172 -0
  209. package/dist/web/Tooltip.web.tsrx.js +184 -0
  210. package/dist/web/Tree.web.tsrx.js +146 -0
  211. package/dist/web/User.web.tsrx.js +116 -0
  212. package/dist/web/View.web.tsrx.js +250 -0
  213. package/dist/web/VirtualList.web.tsrx.js +622 -0
  214. package/dist/web/WebView.web.tsrx.js +272 -0
  215. package/dist/web/aliases.web.tsrx.js +24 -0
  216. package/dist/web/{ui36.js → anim.web.tsrx.js} +3 -35
  217. package/dist/web/child-array.js +15 -0
  218. package/dist/web/icons.js +25 -0
  219. package/dist/web/index.shared.web.js +92 -0
  220. package/dist/web/octane-client-build.json +1 -1
  221. package/dist/web/pan.web.tsrx.js +66 -0
  222. package/dist/web/platform.web.js +9 -0
  223. package/dist/web/refresh-metrics.js +9 -0
  224. package/dist/web/refresh.web.js +133 -0
  225. package/dist/web/{ui17.js → route-table.js} +105 -4
  226. package/dist/web/{ui18.js → route.web.js} +48 -11
  227. package/dist/web/sheet-detents.web.js +103 -0
  228. package/dist/web/{ui60.js → sheet-service.web.js} +5 -1
  229. package/dist/web/sheet-snap.js +35 -0
  230. package/dist/{native/ui31.js → web/theme/theme-scheme.js} +2 -2
  231. package/dist/web/{ui35.js → toast-anchor.web.tsrx.js} +3 -3
  232. package/dist/web/transform.web.js +43 -0
  233. package/dist/web/translate.web.js +13 -0
  234. package/dist/web/ui.js +93 -53
  235. package/dist/web/use-back.web.tsrx.js +9 -0
  236. package/dist/web/virtual-list-layout.js +146 -0
  237. package/dist/web/web/index.js +3 -0
  238. package/package.json +53 -14
  239. package/platforms/android/include.gradle +8 -0
  240. package/platforms/android/native-api-usage.json +8 -0
  241. package/platforms/ios/Podfile +2 -0
  242. package/src/Absolute.tsrx +22 -0
  243. package/src/Absolute.web.tsrx +22 -0
  244. package/src/Accordion.macos.tsrx +50 -0
  245. package/src/Accordion.tsrx +50 -0
  246. package/src/Accordion.web.tsrx +43 -0
  247. package/src/ActivityIndicator.tsrx +29 -0
  248. package/src/ActivityIndicator.web.tsrx +14 -0
  249. package/src/Alert.macos.tsrx +42 -0
  250. package/src/Alert.tsrx +24 -0
  251. package/src/Alert.web.tsrx +23 -0
  252. package/src/Avatar.macos.tsrx +25 -0
  253. package/src/Avatar.tsrx +25 -0
  254. package/src/Avatar.web.tsrx +24 -0
  255. package/src/AvatarGroup.macos.tsrx +32 -0
  256. package/src/AvatarGroup.tsrx +32 -0
  257. package/src/AvatarGroup.web.tsrx +29 -0
  258. package/src/Badge.macos.tsrx +12 -0
  259. package/src/Badge.tsrx +12 -0
  260. package/src/Badge.web.tsrx +10 -0
  261. package/src/Banner.macos.tsrx +20 -0
  262. package/src/Banner.tsrx +20 -0
  263. package/src/Banner.web.tsrx +20 -0
  264. package/src/Breadcrumb.macos.tsrx +27 -0
  265. package/src/Breadcrumb.tsrx +27 -0
  266. package/src/Breadcrumb.web.tsrx +25 -0
  267. package/src/Button.tsrx +23 -0
  268. package/src/Button.web.tsrx +21 -0
  269. package/src/CameraView.macos.tsrx +6 -0
  270. package/src/Card.macos.tsrx +13 -0
  271. package/src/Card.tsrx +13 -0
  272. package/src/Card.web.tsrx +11 -0
  273. package/src/Checkbox.tsrx +23 -0
  274. package/src/Checkbox.web.tsrx +34 -0
  275. package/src/CheckboxGroup.macos.tsrx +39 -0
  276. package/src/CheckboxGroup.tsrx +39 -0
  277. package/src/CheckboxGroup.web.tsrx +38 -0
  278. package/src/Chip.macos.tsrx +25 -0
  279. package/src/Chip.tsrx +25 -0
  280. package/src/Chip.web.tsrx +25 -0
  281. package/src/Collapsible.macos.tsrx +39 -0
  282. package/src/Collapsible.tsrx +39 -0
  283. package/src/Collapsible.web.tsrx +33 -0
  284. package/src/CommandPalette.macos.tsrx +58 -0
  285. package/src/CommandPalette.tsrx +58 -0
  286. package/src/CommandPalette.web.tsrx +59 -0
  287. package/src/ContextMenu.macos.tsrx +59 -0
  288. package/src/ContextMenu.tsrx +59 -0
  289. package/src/ContextMenu.web.tsrx +69 -0
  290. package/src/Drawer.macos.tsrx +28 -0
  291. package/src/Drawer.tsrx +25 -0
  292. package/src/Drawer.web.tsrx +31 -0
  293. package/src/DropdownMenu.macos.tsrx +63 -0
  294. package/src/DropdownMenu.tsrx +63 -0
  295. package/src/DropdownMenu.web.tsrx +78 -0
  296. package/src/Empty.macos.tsrx +15 -0
  297. package/src/Empty.tsrx +15 -0
  298. package/src/Empty.web.tsrx +13 -0
  299. package/src/FieldGroup.macos.tsrx +17 -0
  300. package/src/FieldGroup.tsrx +17 -0
  301. package/src/FieldGroup.web.tsrx +17 -0
  302. package/src/FormField.macos.tsrx +25 -0
  303. package/src/FormField.tsrx +25 -0
  304. package/src/FormField.web.tsrx +24 -0
  305. package/src/Grid.tsrx +32 -0
  306. package/src/Grid.web.tsrx +43 -0
  307. package/src/Heading.macos.tsrx +8 -0
  308. package/src/Heading.tsrx +17 -0
  309. package/src/Heading.web.tsrx +15 -0
  310. package/src/Hoverable.mobile.tsrx +21 -0
  311. package/src/Hoverable.tsrx +113 -0
  312. package/src/Hoverable.web.tsrx +98 -0
  313. package/src/Icon.macos.tsrx +18 -0
  314. package/src/Icon.tsrx +65 -0
  315. package/src/Icon.web.tsrx +75 -0
  316. package/src/Image.macos.tsrx +12 -0
  317. package/src/Image.tsrx +51 -0
  318. package/src/Image.web.tsrx +14 -0
  319. package/src/InputNumber.macos.tsrx +49 -0
  320. package/src/InputNumber.tsrx +49 -0
  321. package/src/InputNumber.web.tsrx +47 -0
  322. package/src/InputRating.macos.tsrx +42 -0
  323. package/src/InputRating.tsrx +39 -0
  324. package/src/InputRating.web.tsrx +52 -0
  325. package/src/InputTags.macos.tsrx +49 -0
  326. package/src/InputTags.tsrx +49 -0
  327. package/src/InputTags.web.tsrx +49 -0
  328. package/src/Kbd.macos.tsrx +11 -0
  329. package/src/Kbd.tsrx +11 -0
  330. package/src/Kbd.web.tsrx +9 -0
  331. package/src/KeyboardAvoiding.macos.tsrx +8 -0
  332. package/src/KeyboardAvoiding.mobile.tsrx +63 -0
  333. package/src/Link.macos.tsrx +15 -0
  334. package/src/Link.tsrx +10 -0
  335. package/src/Link.web.tsrx +12 -0
  336. package/src/ListItem.macos.tsrx +52 -0
  337. package/src/ListItem.tsrx +52 -0
  338. package/src/ListItem.web.tsrx +50 -0
  339. package/src/Meter.macos.tsrx +8 -0
  340. package/src/Meter.tsrx +45 -0
  341. package/src/Meter.web.tsrx +32 -0
  342. package/src/NavLink.macos.tsrx +24 -0
  343. package/src/NavLink.tsrx +22 -0
  344. package/src/NavLink.web.tsrx +23 -0
  345. package/src/NavigationMenu.macos.tsrx +31 -0
  346. package/src/NavigationMenu.tsrx +28 -0
  347. package/src/NavigationMenu.web.tsrx +31 -0
  348. package/src/Overlay.macos.tsrx +11 -0
  349. package/src/Overlay.tsrx +84 -0
  350. package/src/Overlay.web.tsrx +23 -0
  351. package/src/Pagination.macos.tsrx +54 -0
  352. package/src/Pagination.tsrx +47 -0
  353. package/src/Pagination.web.tsrx +50 -0
  354. package/src/PinInput.macos.tsrx +46 -0
  355. package/src/PinInput.tsrx +46 -0
  356. package/src/PinInput.web.tsrx +45 -0
  357. package/src/Popover.macos.tsrx +11 -0
  358. package/src/Popover.tsrx +157 -0
  359. package/src/Popover.web.tsrx +109 -0
  360. package/src/Pressable.macos.tsrx +19 -0
  361. package/src/Pressable.tsrx +37 -0
  362. package/src/Pressable.web.tsrx +45 -0
  363. package/src/ProgressGroup.macos.tsrx +17 -0
  364. package/src/ProgressGroup.tsrx +17 -0
  365. package/src/ProgressGroup.web.tsrx +15 -0
  366. package/src/RadioGroup.macos.tsrx +50 -0
  367. package/src/RadioGroup.tsrx +34 -0
  368. package/src/RadioGroup.web.tsrx +43 -0
  369. package/src/RichText.tsrx +40 -0
  370. package/src/RichText.web.tsrx +24 -0
  371. package/src/RouteHost.macos.tsrx +18 -0
  372. package/src/RouteHost.mobile.tsrx +44 -0
  373. package/src/Row.macos.tsrx +26 -0
  374. package/src/Row.tsrx +27 -0
  375. package/src/Row.web.tsrx +27 -0
  376. package/src/SafeArea.macos.tsrx +8 -0
  377. package/src/SafeArea.tsrx +20 -0
  378. package/src/SafeArea.web.tsrx +24 -0
  379. package/src/Screen.macos.tsrx +14 -0
  380. package/src/Screen.tsrx +31 -0
  381. package/src/Screen.web.tsrx +7 -0
  382. package/src/ScrollBox.tsrx +8 -0
  383. package/src/ScrollBox.web.tsrx +7 -0
  384. package/src/ScrollView.macos.tsrx +19 -0
  385. package/src/ScrollView.tsrx +117 -0
  386. package/src/ScrollView.web.tsrx +109 -0
  387. package/src/SearchInput.tsrx +60 -0
  388. package/src/SearchInput.web.test.tsrx +58 -0
  389. package/src/SearchInput.web.tsrx +55 -0
  390. package/src/SegmentedControl.tsrx +43 -0
  391. package/src/SegmentedControl.web.test.tsrx +46 -0
  392. package/src/SegmentedControl.web.tsrx +51 -0
  393. package/src/Select.macos.tsrx +104 -0
  394. package/src/Select.tsrx +104 -0
  395. package/src/Select.web.tsrx +124 -0
  396. package/src/Separator.macos.tsrx +17 -0
  397. package/src/Separator.tsrx +17 -0
  398. package/src/Separator.web.tsrx +17 -0
  399. package/src/Sheet.macos.tsrx +15 -0
  400. package/src/Sheet.tsrx +122 -0
  401. package/src/Sheet.web.tsrx +56 -0
  402. package/src/Skeleton.macos.tsrx +15 -0
  403. package/src/Skeleton.tsrx +15 -0
  404. package/src/Skeleton.web.tsrx +15 -0
  405. package/src/Slider.tsrx +71 -0
  406. package/src/Slider.web.tsrx +60 -0
  407. package/src/Spacer.tsrx +8 -0
  408. package/src/Spacer.web.tsrx +6 -0
  409. package/src/Stack.tsrx +24 -0
  410. package/src/Stack.web.tsrx +22 -0
  411. package/src/Stepper.macos.tsrx +52 -0
  412. package/src/Stepper.tsrx +31 -0
  413. package/src/Stepper.web.tsrx +37 -0
  414. package/src/Switch.tsrx +21 -0
  415. package/src/Switch.web.tsrx +28 -0
  416. package/src/Table.macos.tsrx +37 -0
  417. package/src/Table.tsrx +37 -0
  418. package/src/Table.web.tsrx +37 -0
  419. package/src/Tabs.macos.tsrx +60 -0
  420. package/src/Tabs.tsrx +55 -0
  421. package/src/Tabs.web.tsrx +98 -0
  422. package/src/Text.macos.tsrx +18 -0
  423. package/src/Text.tsrx +62 -0
  424. package/src/Text.web.tsrx +31 -0
  425. package/src/TextArea.tsrx +65 -0
  426. package/src/TextArea.web.tsrx +61 -0
  427. package/src/TextInput.tsrx +39 -0
  428. package/src/TextInput.web.tsrx +28 -0
  429. package/src/Timeline.macos.tsrx +27 -0
  430. package/src/Timeline.tsrx +24 -0
  431. package/src/Timeline.web.tsrx +22 -0
  432. package/src/Tooltip.mobile.tsrx +20 -0
  433. package/src/Tooltip.tsrx +102 -0
  434. package/src/Tooltip.web.tsrx +156 -0
  435. package/src/Tree.macos.tsrx +45 -0
  436. package/src/Tree.tsrx +45 -0
  437. package/src/Tree.web.tsrx +52 -0
  438. package/src/User.macos.tsrx +24 -0
  439. package/src/User.tsrx +24 -0
  440. package/src/User.web.tsrx +24 -0
  441. package/src/View.macos.tsrx +29 -0
  442. package/src/View.tsrx +32 -0
  443. package/src/View.web.tsrx +33 -0
  444. package/src/VirtualList.macos.tsrx +298 -0
  445. package/src/VirtualList.tsrx +358 -0
  446. package/src/VirtualList.web.tsrx +313 -0
  447. package/src/WebView.macos.tsrx +6 -0
  448. package/src/WebView.tsrx +89 -0
  449. package/src/WebView.web.tsrx +92 -0
  450. package/src/aliases.macos.tsrx +18 -0
  451. package/src/aliases.tsrx +18 -0
  452. package/src/aliases.web.tsrx +17 -0
  453. package/src/android/BottomNavigationView.android.tsrx +170 -0
  454. package/src/android/CircularProgressIndicator.android.tsrx +19 -0
  455. package/src/android/DrawerLayout.android.tsrx +48 -0
  456. package/src/android/MaterialDialog.android.tsrx +62 -0
  457. package/src/android/MaterialSwitch.android.tsrx +18 -0
  458. package/src/android/RecyclerView.android.tsrx +173 -0
  459. package/src/android/SeekBar.android.tsrx +20 -0
  460. package/src/android/icon.android.ts +8 -0
  461. package/src/android/index.ts +37 -0
  462. package/src/android/openModal.android.ts +55 -0
  463. package/src/anim.macos.tsrx +20 -0
  464. package/src/anim.tsrx +65 -0
  465. package/src/anim.web.tsrx +55 -0
  466. package/src/apply-native-modifiers.native.ts +13 -0
  467. package/src/camera-permission.web.ts +11 -0
  468. package/src/child-array.ts +16 -0
  469. package/src/colorScheme.macos.ts +27 -0
  470. package/src/controls.macos.tsrx +171 -0
  471. package/src/cx.ts +8 -0
  472. package/src/escape-props.macos.ts +11 -0
  473. package/src/escape-props.ts +70 -0
  474. package/src/escape-props.web.ts +25 -0
  475. package/src/hosted-unsupported.macos.tsrx +9 -0
  476. package/src/icons.ts +60 -0
  477. package/src/index.linux.ts +10 -0
  478. package/src/index.macos.ts +106 -0
  479. package/src/index.mobile.ts +6 -0
  480. package/src/index.shared.ts +269 -0
  481. package/src/index.shared.web.ts +270 -0
  482. package/src/index.ts +1 -0
  483. package/src/index.web.ts +1 -0
  484. package/src/ios/LiquidGlass.ios.tsrx +41 -0
  485. package/src/ios/LiquidGlassContainer.ios.tsrx +34 -0
  486. package/src/ios/SideDrawer.ios.tsrx +49 -0
  487. package/src/ios/UIActivityIndicatorView.ios.tsrx +18 -0
  488. package/src/ios/UIModal.ios.tsrx +68 -0
  489. package/src/ios/UISlider.ios.tsrx +20 -0
  490. package/src/ios/UISwitch.ios.tsrx +18 -0
  491. package/src/ios/UITabBar.ios.tsrx +172 -0
  492. package/src/ios/UITableView.ios.tsrx +186 -0
  493. package/src/ios/icon.ios.ts +8 -0
  494. package/src/ios/index.ts +42 -0
  495. package/src/ios/openModal.ios.ts +55 -0
  496. package/src/keyboard-inset.mobile.ts +89 -0
  497. package/src/layout-child.ts +57 -0
  498. package/src/layout-child.web.ts +108 -0
  499. package/src/layout-shells.macos.tsrx +10 -0
  500. package/src/layout.macos.tsrx +41 -0
  501. package/src/macos-extras.macos.tsrx +40 -0
  502. package/src/meter-math.ts +6 -0
  503. package/src/modal-presenter.mobile.ts +24 -0
  504. package/src/modifier-factories.ts +20 -0
  505. package/src/native/index.ts +6 -0
  506. package/src/pan.tsrx +64 -0
  507. package/src/pan.web.tsrx +38 -0
  508. package/src/platform.macos.ts +1 -0
  509. package/src/platform.ts +7 -0
  510. package/src/platform.web.ts +6 -0
  511. package/src/platformProps.ts +23 -0
  512. package/src/platformProps.web.ts +14 -0
  513. package/src/popover-position.ts +62 -0
  514. package/src/popover.mobile.test.ts +54 -0
  515. package/src/props.ts +1812 -0
  516. package/src/references.d.ts +2 -0
  517. package/src/refresh-metrics.ts +11 -0
  518. package/src/refresh.ts +271 -0
  519. package/src/refresh.web.test.ts +111 -0
  520. package/src/refresh.web.ts +205 -0
  521. package/src/root-layout.mobile.ts +89 -0
  522. package/src/route-host.mobile.ts +1 -0
  523. package/src/route-table.test.ts +345 -0
  524. package/src/route-table.ts +585 -0
  525. package/src/route.macos.ts +201 -0
  526. package/src/route.ts +703 -0
  527. package/src/route.web.ts +366 -0
  528. package/src/safeAreaInsets.macos.tsrx +7 -0
  529. package/src/safeAreaInsets.tsrx +60 -0
  530. package/src/safeAreaInsets.web.tsrx +38 -0
  531. package/src/sheet-detents.ts +142 -0
  532. package/src/sheet-detents.web.ts +147 -0
  533. package/src/sheet-service.macos.ts +60 -0
  534. package/src/sheet-service.ts +124 -0
  535. package/src/sheet-service.web.ts +64 -0
  536. package/src/sheet-snap.test.ts +46 -0
  537. package/src/sheet-snap.ts +66 -0
  538. package/src/stacks.macos.ts +13 -0
  539. package/src/stacks.ts +44 -0
  540. package/src/stacks.web.ts +9 -0
  541. package/src/store.mobile.test.ts +149 -0
  542. package/src/store.ts +39 -0
  543. package/src/store.web.test.tsrx +58 -0
  544. package/src/styled.macos.tsrx +23 -0
  545. package/src/styled.test.ts +40 -0
  546. package/src/styled.tsrx +36 -0
  547. package/src/styled.web.tsrx +23 -0
  548. package/src/surfaces.macos.tsrx +27 -0
  549. package/src/svg.mobile.ts +76 -0
  550. package/src/tap-to-blur.mobile.ts +108 -0
  551. package/src/text-controls.macos.tsrx +11 -0
  552. package/src/text-write.ts +28 -0
  553. package/src/text-write.web.ts +13 -0
  554. package/src/theme/colorScheme.linux.ts +52 -0
  555. package/src/theme/colorScheme.ts +26 -0
  556. package/src/theme/colorScheme.web.ts +20 -0
  557. package/src/theme/status-bar-scheme.mobile.ts +39 -0
  558. package/src/theme/theme-scheme.macos.ts +50 -0
  559. package/src/theme/theme-scheme.ts +66 -0
  560. package/src/theme/tokens.css +1408 -206
  561. package/src/toast-anchor.macos.tsrx +3 -0
  562. package/src/toast-anchor.tsrx +122 -0
  563. package/src/toast-anchor.web.tsrx +92 -0
  564. package/src/toast.tsrx +90 -0
  565. package/src/toast.web.tsrx +50 -0
  566. package/src/transform.web.ts +52 -0
  567. package/src/translate.macos.ts +5 -0
  568. package/src/translate.ts +13 -0
  569. package/src/translate.web.ts +15 -0
  570. package/src/tsconfig.json +8 -0
  571. package/src/unsupported.macos.tsrx +5 -0
  572. package/src/use-back.tsrx +11 -0
  573. package/src/use-back.web.tsrx +12 -0
  574. package/src/use-store.tsrx +18 -0
  575. package/src/use-store.web.tsrx +18 -0
  576. package/src/useMeasure.macos.tsrx +23 -0
  577. package/src/useMeasure.tsrx +66 -0
  578. package/src/useMeasure.web.tsrx +39 -0
  579. package/src/useStore.macos.tsrx +6 -0
  580. package/src/vendor/ui-svg/LICENSE +201 -0
  581. package/src/vendor/ui-svg/index.android.ts +189 -0
  582. package/src/vendor/ui-svg/index.common.ts +19 -0
  583. package/src/vendor/ui-svg/index.ios.ts +147 -0
  584. package/src/vendor/ui-svg/index.ts +1 -0
  585. package/src/vendor/ui-svg/typings/SVGKit.d.ts +2862 -0
  586. package/src/vendor/ui-svg/typings/android.d.ts +1483 -0
  587. package/src/vendor/ui-svg/typings/ios.d.ts +1511 -0
  588. package/src/virtual-list-layout.test.ts +81 -0
  589. package/src/virtual-list-layout.ts +246 -0
  590. package/src/web/index.ts +11 -0
  591. package/src/windows.linux.ts +59 -0
  592. package/src/windows.macos.ts +10 -0
  593. package/src/windows.ts +7 -0
  594. package/src/windows.web.ts +6 -0
  595. package/types/generated/.tsrx-typegen-manifest.json +250 -0
  596. package/types/generated/Absolute.d.ts +3 -0
  597. package/types/generated/Absolute.web.d.ts +3 -0
  598. package/types/generated/Accordion.d.ts +5 -0
  599. package/types/generated/Accordion.web.d.ts +5 -0
  600. package/types/generated/ActivityIndicator.d.ts +7 -0
  601. package/types/generated/ActivityIndicator.web.d.ts +3 -0
  602. package/types/generated/Alert.d.ts +4 -0
  603. package/types/generated/Alert.web.d.ts +5 -0
  604. package/types/generated/Avatar.d.ts +6 -0
  605. package/types/generated/Avatar.web.d.ts +7 -0
  606. package/types/generated/AvatarGroup.d.ts +6 -0
  607. package/types/generated/AvatarGroup.web.d.ts +6 -0
  608. package/types/generated/Badge.d.ts +5 -0
  609. package/types/generated/Badge.web.d.ts +5 -0
  610. package/types/generated/Banner.d.ts +4 -0
  611. package/types/generated/Banner.web.d.ts +4 -0
  612. package/types/generated/Breadcrumb.d.ts +4 -0
  613. package/types/generated/Breadcrumb.web.d.ts +5 -0
  614. package/types/generated/Button.d.ts +6 -0
  615. package/types/generated/Button.web.d.ts +6 -0
  616. package/types/generated/Card.d.ts +4 -0
  617. package/types/generated/Card.web.d.ts +4 -0
  618. package/types/generated/Checkbox.d.ts +5 -0
  619. package/types/generated/Checkbox.web.d.ts +6 -0
  620. package/types/generated/CheckboxGroup.d.ts +3 -0
  621. package/types/generated/CheckboxGroup.web.d.ts +3 -0
  622. package/types/generated/Chip.d.ts +5 -0
  623. package/types/generated/Chip.web.d.ts +5 -0
  624. package/types/generated/Collapsible.d.ts +5 -0
  625. package/types/generated/Collapsible.web.d.ts +5 -0
  626. package/types/generated/CommandPalette.d.ts +4 -0
  627. package/types/generated/CommandPalette.web.d.ts +4 -0
  628. package/types/generated/ContextMenu.d.ts +5 -0
  629. package/types/generated/ContextMenu.web.d.ts +4 -0
  630. package/types/generated/Drawer.d.ts +7 -0
  631. package/types/generated/Drawer.web.d.ts +7 -0
  632. package/types/generated/DropdownMenu.d.ts +5 -0
  633. package/types/generated/DropdownMenu.web.d.ts +5 -0
  634. package/types/generated/Empty.d.ts +4 -0
  635. package/types/generated/Empty.web.d.ts +4 -0
  636. package/types/generated/FieldGroup.d.ts +4 -0
  637. package/types/generated/FieldGroup.web.d.ts +4 -0
  638. package/types/generated/FormField.d.ts +5 -0
  639. package/types/generated/FormField.web.d.ts +5 -0
  640. package/types/generated/Grid.d.ts +3 -0
  641. package/types/generated/Grid.web.d.ts +3 -0
  642. package/types/generated/Heading.d.ts +2 -0
  643. package/types/generated/Heading.web.d.ts +2 -0
  644. package/types/generated/Hoverable.d.ts +10 -0
  645. package/types/generated/Hoverable.web.d.ts +9 -0
  646. package/types/generated/Icon.d.ts +3 -0
  647. package/types/generated/Icon.web.d.ts +3 -0
  648. package/types/generated/Image.d.ts +7 -0
  649. package/types/generated/Image.web.d.ts +3 -0
  650. package/types/generated/InputNumber.d.ts +5 -0
  651. package/types/generated/InputNumber.web.d.ts +5 -0
  652. package/types/generated/InputRating.d.ts +4 -0
  653. package/types/generated/InputRating.web.d.ts +4 -0
  654. package/types/generated/InputTags.d.ts +4 -0
  655. package/types/generated/InputTags.web.d.ts +5 -0
  656. package/types/generated/Kbd.d.ts +4 -0
  657. package/types/generated/Kbd.web.d.ts +4 -0
  658. package/types/generated/KeyboardAvoiding.mobile.d.ts +2 -0
  659. package/types/generated/Link.d.ts +2 -0
  660. package/types/generated/Link.web.d.ts +3 -0
  661. package/types/generated/ListItem.d.ts +3 -0
  662. package/types/generated/ListItem.web.d.ts +3 -0
  663. package/types/generated/Meter.d.ts +3 -0
  664. package/types/generated/Meter.web.d.ts +3 -0
  665. package/types/generated/NavLink.d.ts +3 -0
  666. package/types/generated/NavLink.web.d.ts +3 -0
  667. package/types/generated/NavigationMenu.d.ts +4 -0
  668. package/types/generated/NavigationMenu.web.d.ts +5 -0
  669. package/types/generated/Overlay.d.ts +3 -0
  670. package/types/generated/Overlay.web.d.ts +3 -0
  671. package/types/generated/Pagination.d.ts +4 -0
  672. package/types/generated/Pagination.web.d.ts +5 -0
  673. package/types/generated/PinInput.d.ts +4 -0
  674. package/types/generated/PinInput.web.d.ts +4 -0
  675. package/types/generated/Popover.d.ts +6 -0
  676. package/types/generated/Popover.web.d.ts +3 -0
  677. package/types/generated/Pressable.d.ts +6 -0
  678. package/types/generated/Pressable.web.d.ts +2 -0
  679. package/types/generated/ProgressGroup.d.ts +3 -0
  680. package/types/generated/ProgressGroup.web.d.ts +4 -0
  681. package/types/generated/RadioGroup.d.ts +5 -0
  682. package/types/generated/RadioGroup.web.d.ts +5 -0
  683. package/types/generated/RichText.d.ts +7 -0
  684. package/types/generated/RichText.web.d.ts +3 -0
  685. package/types/generated/RouteHost.mobile.d.ts +14 -0
  686. package/types/generated/Row.d.ts +2 -0
  687. package/types/generated/Row.web.d.ts +2 -0
  688. package/types/generated/SafeArea.d.ts +2 -0
  689. package/types/generated/SafeArea.web.d.ts +3 -0
  690. package/types/generated/Screen.d.ts +3 -0
  691. package/types/generated/Screen.web.d.ts +3 -0
  692. package/types/generated/ScrollBox.d.ts +3 -0
  693. package/types/generated/ScrollBox.web.d.ts +3 -0
  694. package/types/generated/ScrollView.d.ts +7 -0
  695. package/types/generated/ScrollView.web.d.ts +6 -0
  696. package/types/generated/SearchInput.d.ts +7 -0
  697. package/types/generated/SearchInput.web.d.ts +6 -0
  698. package/types/generated/SegmentedControl.d.ts +7 -0
  699. package/types/generated/SegmentedControl.web.d.ts +6 -0
  700. package/types/generated/Select.d.ts +6 -0
  701. package/types/generated/Select.web.d.ts +6 -0
  702. package/types/generated/Separator.d.ts +5 -0
  703. package/types/generated/Separator.web.d.ts +5 -0
  704. package/types/generated/Sheet.d.ts +5 -0
  705. package/types/generated/Sheet.web.d.ts +7 -0
  706. package/types/generated/Skeleton.d.ts +5 -0
  707. package/types/generated/Skeleton.web.d.ts +6 -0
  708. package/types/generated/Slider.d.ts +6 -0
  709. package/types/generated/Slider.web.d.ts +6 -0
  710. package/types/generated/Spacer.d.ts +3 -0
  711. package/types/generated/Spacer.web.d.ts +3 -0
  712. package/types/generated/Stack.d.ts +3 -0
  713. package/types/generated/Stack.web.d.ts +3 -0
  714. package/types/generated/Stepper.d.ts +4 -0
  715. package/types/generated/Stepper.web.d.ts +5 -0
  716. package/types/generated/Switch.d.ts +7 -0
  717. package/types/generated/Switch.web.d.ts +6 -0
  718. package/types/generated/Table.d.ts +4 -0
  719. package/types/generated/Table.web.d.ts +5 -0
  720. package/types/generated/Tabs.d.ts +10 -0
  721. package/types/generated/Tabs.web.d.ts +6 -0
  722. package/types/generated/Text.d.ts +2 -0
  723. package/types/generated/Text.web.d.ts +2 -0
  724. package/types/generated/TextArea.d.ts +8 -0
  725. package/types/generated/TextArea.web.d.ts +9 -0
  726. package/types/generated/TextInput.d.ts +9 -0
  727. package/types/generated/TextInput.web.d.ts +2 -0
  728. package/types/generated/Timeline.d.ts +3 -0
  729. package/types/generated/Timeline.web.d.ts +4 -0
  730. package/types/generated/Tooltip.d.ts +9 -0
  731. package/types/generated/Tooltip.web.d.ts +12 -0
  732. package/types/generated/Tree.d.ts +4 -0
  733. package/types/generated/Tree.web.d.ts +4 -0
  734. package/types/generated/User.d.ts +5 -0
  735. package/types/generated/User.web.d.ts +5 -0
  736. package/types/generated/View.d.ts +7 -0
  737. package/types/generated/View.web.d.ts +7 -0
  738. package/types/generated/VirtualList.d.ts +5 -0
  739. package/types/generated/VirtualList.web.d.ts +4 -0
  740. package/types/generated/WebView.d.ts +11 -0
  741. package/types/generated/WebView.web.d.ts +5 -0
  742. package/types/generated/aliases.d.ts +7 -0
  743. package/types/generated/aliases.web.d.ts +7 -0
  744. package/types/generated/android/BottomNavigationView.android.d.ts +9 -0
  745. package/types/generated/android/CircularProgressIndicator.android.d.ts +6 -0
  746. package/types/generated/android/DrawerLayout.android.d.ts +12 -0
  747. package/types/generated/android/MaterialDialog.android.d.ts +8 -0
  748. package/types/generated/android/MaterialSwitch.android.d.ts +6 -0
  749. package/types/generated/android/RecyclerView.android.d.ts +14 -0
  750. package/types/generated/android/SeekBar.android.d.ts +5 -0
  751. package/types/generated/android/icon.android.d.ts +5 -0
  752. package/types/generated/android/index.d.ts +12 -0
  753. package/types/generated/android/openModal.android.d.ts +4 -0
  754. package/types/generated/anim.d.ts +10 -0
  755. package/types/generated/anim.web.d.ts +3 -0
  756. package/types/generated/apply-native-modifiers.native.d.ts +3 -0
  757. package/types/generated/child-array.d.ts +3 -0
  758. package/types/generated/cx.d.ts +6 -0
  759. package/types/generated/escape-props.d.ts +16 -0
  760. package/types/generated/icons.d.ts +5 -0
  761. package/types/generated/index.d.ts +1 -0
  762. package/types/generated/index.linux.d.ts +5 -0
  763. package/types/generated/index.mobile.d.ts +4 -0
  764. package/types/generated/index.shared.d.ts +111 -0
  765. package/types/generated/index.shared.web.d.ts +111 -0
  766. package/types/generated/index.web.d.ts +1 -0
  767. package/types/generated/ios/LiquidGlass.ios.d.ts +12 -0
  768. package/types/generated/ios/LiquidGlassContainer.ios.d.ts +13 -0
  769. package/types/generated/ios/SideDrawer.ios.d.ts +12 -0
  770. package/types/generated/ios/UIActivityIndicatorView.ios.d.ts +5 -0
  771. package/types/generated/ios/UIModal.ios.d.ts +7 -0
  772. package/types/generated/ios/UISlider.ios.d.ts +5 -0
  773. package/types/generated/ios/UISwitch.ios.d.ts +6 -0
  774. package/types/generated/ios/UITabBar.ios.d.ts +7 -0
  775. package/types/generated/ios/UITableView.ios.d.ts +14 -0
  776. package/types/generated/ios/icon.ios.d.ts +5 -0
  777. package/types/generated/ios/index.d.ts +14 -0
  778. package/types/generated/ios/openModal.ios.d.ts +4 -0
  779. package/types/generated/keyboard-inset.mobile.d.ts +10 -0
  780. package/types/generated/layout-child.d.ts +6 -0
  781. package/types/generated/layout-child.web.d.ts +15 -0
  782. package/types/generated/meter-math.d.ts +6 -0
  783. package/types/generated/modal-presenter.mobile.d.ts +14 -0
  784. package/types/generated/modifier-factories.d.ts +15 -0
  785. package/types/generated/native/index.d.ts +3 -0
  786. package/types/generated/pan.d.ts +2 -0
  787. package/types/generated/pan.web.d.ts +9 -0
  788. package/types/generated/platform.d.ts +7 -0
  789. package/types/generated/platform.web.d.ts +6 -0
  790. package/types/generated/platformProps.d.ts +7 -0
  791. package/types/generated/platformProps.web.d.ts +2 -0
  792. package/types/generated/popover-position.d.ts +14 -0
  793. package/types/generated/props.d.ts +1626 -0
  794. package/types/generated/refresh-metrics.d.ts +8 -0
  795. package/types/generated/refresh.d.ts +42 -0
  796. package/types/generated/refresh.web.d.ts +23 -0
  797. package/types/generated/root-layout.mobile.d.ts +22 -0
  798. package/types/generated/route-host.mobile.d.ts +1 -0
  799. package/types/generated/route-table.d.ts +90 -0
  800. package/types/generated/route.d.ts +74 -0
  801. package/types/generated/route.web.d.ts +67 -0
  802. package/types/generated/safeAreaInsets.d.ts +8 -0
  803. package/types/generated/safeAreaInsets.web.d.ts +8 -0
  804. package/types/generated/sheet-detents.d.ts +23 -0
  805. package/types/generated/sheet-detents.web.d.ts +13 -0
  806. package/types/generated/sheet-service.d.ts +11 -0
  807. package/types/generated/sheet-service.web.d.ts +6 -0
  808. package/types/generated/sheet-snap.d.ts +18 -0
  809. package/types/generated/stacks.d.ts +9 -0
  810. package/types/generated/stacks.web.d.ts +4 -0
  811. package/types/generated/store.d.ts +14 -0
  812. package/types/generated/styled.d.ts +20 -0
  813. package/types/generated/styled.web.d.ts +10 -0
  814. package/types/generated/svg.mobile.d.ts +23 -0
  815. package/types/generated/tap-to-blur.mobile.d.ts +16 -0
  816. package/types/generated/text-write.d.ts +9 -0
  817. package/types/generated/theme/colorScheme.d.ts +6 -0
  818. package/types/generated/theme/colorScheme.linux.d.ts +5 -0
  819. package/types/generated/theme/colorScheme.web.d.ts +5 -0
  820. package/types/generated/theme/status-bar-scheme.mobile.d.ts +1 -0
  821. package/types/generated/theme/theme-scheme.d.ts +20 -0
  822. package/types/generated/toast-anchor.d.ts +4 -0
  823. package/types/generated/toast-anchor.web.d.ts +4 -0
  824. package/types/generated/transform.web.d.ts +8 -0
  825. package/types/generated/translate.d.ts +5 -0
  826. package/types/generated/translate.web.d.ts +6 -0
  827. package/types/generated/use-back.d.ts +6 -0
  828. package/types/generated/use-back.web.d.ts +7 -0
  829. package/types/generated/use-store.d.ts +9 -0
  830. package/types/generated/use-store.web.d.ts +9 -0
  831. package/types/generated/useMeasure.d.ts +3 -0
  832. package/types/generated/useMeasure.web.d.ts +3 -0
  833. package/types/generated/vendor/ui-svg/index.common.d.ts +7 -0
  834. package/types/generated/vendor/ui-svg/index.d.ts +1 -0
  835. package/types/generated/vendor/ui-svg/index.ios.d.ts +13 -0
  836. package/types/generated/virtual-list-layout.d.ts +44 -0
  837. package/types/generated/web/index.d.ts +3 -0
  838. package/types/generated/windows.d.ts +3 -0
  839. package/types/generated/windows.linux.d.ts +15 -0
  840. package/types/generated/windows.web.d.ts +3 -0
  841. package/types/index.macos.d.ts +142 -0
  842. package/dist/native/ui10.js +0 -32
  843. package/dist/native/ui25.js +0 -141
  844. package/dist/native/ui27.js +0 -61
  845. package/dist/native/ui39.js +0 -103
  846. package/dist/native/ui4.js +0 -24
  847. package/dist/native/ui46.js +0 -267
  848. package/dist/native/ui48.js +0 -35
  849. package/dist/native/ui55.js +0 -92
  850. package/dist/native/ui57.js +0 -19
  851. package/dist/native/ui60.js +0 -14
  852. package/dist/native/ui7.js +0 -52
  853. package/dist/native/ui9.js +0 -36
  854. package/dist/web/ui10.js +0 -46
  855. package/dist/web/ui11.js +0 -42
  856. package/dist/web/ui22.js +0 -108
  857. package/dist/web/ui23.js +0 -96
  858. package/dist/web/ui26.js +0 -45
  859. package/dist/web/ui3.js +0 -31
  860. package/dist/web/ui30.js +0 -34
  861. package/dist/web/ui40.js +0 -154
  862. package/dist/web/ui41.js +0 -43
  863. package/dist/web/ui44.js +0 -42
  864. package/dist/web/ui5.js +0 -168
  865. package/dist/web/ui51.js +0 -47
  866. package/dist/web/ui52.js +0 -19
  867. package/dist/web/ui55.js +0 -17
  868. package/dist/web/ui59.js +0 -44
  869. package/dist/web/ui6.js +0 -94
  870. package/dist/web/ui7.js +0 -62
  871. package/dist/web/ui8.js +0 -46
  872. package/dist/web/ui9.js +0 -46
  873. package/types/index.d.ts +0 -258
  874. package/types/props.d.ts +0 -742
  875. /package/dist/native/{ui2.js → cx.js} +0 -0
  876. /package/dist/native/{ui54.js → meter-math.js} +0 -0
  877. /package/dist/native/{ui37.js → popover-position.js} +0 -0
  878. /package/dist/native/{ui61.js → store.js} +0 -0
  879. /package/dist/web/{ui16.js → Link.web.tsrx.js} +0 -0
  880. /package/dist/web/{ui28.js → cx.js} +0 -0
  881. /package/dist/web/{ui2.js → escape-props.web.js} +0 -0
  882. /package/dist/web/{ui4.js → layout-child.web.js} +0 -0
  883. /package/dist/web/{ui49.js → meter-math.js} +0 -0
  884. /package/dist/web/{ui47.js → platformProps.web.js} +0 -0
  885. /package/dist/web/{ui32.js → popover-position.js} +0 -0
  886. /package/dist/web/{ui42.js → safeAreaInsets.web.tsrx.js} +0 -0
  887. /package/dist/web/{ui56.js → stacks.web.js} +0 -0
  888. /package/dist/web/{ui57.js → store.js} +0 -0
  889. /package/dist/web/{ui37.js → styled.web.tsrx.js} +0 -0
  890. /package/dist/web/{ui27.js → theme/colorScheme.web.js} +0 -0
  891. /package/dist/web/{ui58.js → use-store.web.tsrx.js} +0 -0
  892. /package/dist/web/{ui46.js → useMeasure.web.tsrx.js} +0 -0
  893. /package/dist/web/{ui38.js → windows.web.js} +0 -0
@@ -0,0 +1,170 @@
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 { Icon } from '../Icon.tsrx';
10
+ import { Pressable } from '../Pressable.tsrx';
11
+ import { Text } from '../Text.tsrx';
12
+ import { layoutsForRoute, screenFor, useRoute } from '../route';
13
+ import { RouteHost, screenParamsFor } from '../route-host.mobile';
14
+ import type { PlatformTabSpec, PlatformTabsProps, PlatformWidgetProps } from '../props';
15
+ import { applyEscapeProps } from '../escape-props';
16
+
17
+ export type { PlatformTabSpec as TabSpec } from '../props';
18
+
19
+ // Android named stacks never navigate a Frame (upstream #11444 makes
20
+ // TabViewItem frames unsafe) — pushes live in the route store instead, and a
21
+ // stack pane renders the current route here, same shape as the self-drawn
22
+ // Tabs. The bottom bar's OS chrome stays platform-authentic; only the pane
23
+ // content swaps.
24
+ type TabPaneProps = { render: () => any; stack?: string };
25
+ function TabPane(props: TabPaneProps) @{
26
+ const route = useRoute(props.stack ?? '');
27
+ const Screen = route ? screenFor(route.name) : undefined;
28
+
29
+ @if (route && Screen) {
30
+ <RouteHost
31
+ screen={Screen}
32
+ layouts={layoutsForRoute(route.name)}
33
+ params={screenParamsFor(route)}
34
+ />
35
+ } @else {
36
+ <>{props.render()}</>
37
+ }
38
+ }
39
+
40
+ const paneRoots = new WeakMap<GridLayout, any>();
41
+ const tabsByView = new WeakMap<GridLayout, () => any>();
42
+ const itemsCache = new WeakMap<readonly PlatformTabSpec[], TabViewItem[]>();
43
+ const iconWarned = new Set<string>();
44
+
45
+ function applyIcon(item: TabViewItem, name: string): void {
46
+ if (name.startsWith('res://')) {
47
+ item.iconSource = name;
48
+ return;
49
+ }
50
+ const glyph = getIcon(name);
51
+ if (!glyph) {
52
+ warnIconOnce(name, `tab icon '${name}' isn't registered — call registerIcons() at boot.`);
53
+ return;
54
+ }
55
+
56
+ if (glyph.src) {
57
+ item.iconSource = glyph.src;
58
+ } else if (glyph.font) {
59
+ item.iconSource = 'font://' + glyph.font.glyph;
60
+ item.iconFontFamily = glyph.font.family;
61
+ } else if (glyph.text) {
62
+ item.iconSource = 'font://' + glyph.text;
63
+ } else {
64
+ warnIconOnce(
65
+ name,
66
+ `tab icon '${name}' has no src/font/text representation — the platform tab bar can't render svg/markup glyphs.`,
67
+ );
68
+ }
69
+ }
70
+
71
+ function warnIconOnce(name: string, msg: string): void {
72
+ if (iconWarned.has(name)) return;
73
+ iconWarned.add(name);
74
+ console.warn('[octane-xplat] ' + msg);
75
+ }
76
+
77
+ function itemsFor(tabs: readonly PlatformTabSpec[]): TabViewItem[] {
78
+ let items = itemsCache.get(tabs);
79
+ if (items !== undefined) return items;
80
+ items = tabs.map((t) => {
81
+ const item = new TabViewItem();
82
+ item.title = t.title;
83
+ if (t.icon) applyIcon(item, t.icon);
84
+ if (t.stack) {
85
+ const frame = new Frame();
86
+ frame.once('loaded', () => {
87
+ frame.navigate({
88
+ create: () => {
89
+ const page = new Page();
90
+ page.actionBarHidden = true;
91
+ const pane = new GridLayout();
92
+ page.content = pane;
93
+ createNativeScriptRoot(pane).render(
94
+ TabPane as unknown as UniversalComponent, { render: t.render, stack: t.stack });
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
+ function mountPanes(e: any) {
117
+ const tv = e.object as TabView;
118
+ for (const item of tv.items as TabViewItem[]) {
119
+ const cv = item.view as GridLayout;
120
+ if (!(cv instanceof GridLayout) || paneRoots.has(cv)) continue;
121
+ const render = tabsByView.get(cv);
122
+ if (!render) continue;
123
+ const root = createNativeScriptRoot(cv);
124
+ paneRoots.set(cv, root);
125
+ root.render(TabPane as unknown as UniversalComponent, { render });
126
+ }
127
+ }
128
+
129
+ function NavInner(props: {
130
+ className?: any;
131
+ style?: any;
132
+ id?: string;
133
+ tabs: readonly PlatformTabSpec[];
134
+ selectedIndex?: number;
135
+ onSelectedIndexChanged?: (index: number) => void;
136
+ modifiers?: PlatformWidgetProps<PlatformTabsProps>['modifiers'];
137
+ }) @{
138
+ <tabview
139
+ ref={(v: any) => applyEscapeProps(v, props)}
140
+ id={props.id}
141
+ className={cx(props.className)}
142
+ style={props.style}
143
+ items={itemsFor(props.tabs)}
144
+ selectedIndex={props.selectedIndex}
145
+ onSelectedIndexChanged={(e: any) => props.onSelectedIndexChanged?.(e.value)}
146
+ onLoaded={mountPanes}
147
+ />
148
+ }
149
+
150
+ // Memoized on the tabs array — TabView.item writes rebuild the native
151
+ // structure, and the driver re-applies props every render.
152
+ const MemoNav = memo(NavInner, (a, b) => a.tabs === b.tabs && a.selectedIndex === b.selectedIndex && a.modifiers === b.modifiers);
153
+
154
+ /** BottomNavigationView — the platform tab bar (Android bottom navigation
155
+ * via NativeScript TabView). Each `stack` pane hosts a Frame for the tab's
156
+ * chrome, but pushes stay in the route store and render through RouteHost —
157
+ * TabViewItem-hosted Frames lose navigation bookkeeping upstream
158
+ * (NativeScript#11444; the #11446 fix ships in the xplat core patch).
159
+ * `tabs` is identity-stable. */
160
+ export function BottomNavigationView(props: PlatformWidgetProps<PlatformTabsProps>) @{
161
+ <MemoNav
162
+ id={props.id}
163
+ className={props.className}
164
+ style={props.style}
165
+ tabs={props.tabs}
166
+ selectedIndex={props.selectedIndex}
167
+ onSelectedIndexChanged={props.onSelectedIndexChanged}
168
+ modifiers={props.modifiers}
169
+ />
170
+ }
@@ -0,0 +1,19 @@
1
+ /** @jsxImportSource @nativescript-community/octane */
2
+ import type { ActivityIndicatorProps, PlatformWidgetProps } from '../props';
3
+ import { cx } from '../cx';
4
+ import { applyNativeProps } from '../platformProps';
5
+
6
+ /** CircularProgressIndicator — the platform spinner (Android indeterminate
7
+ * ProgressBar via NativeScript `activityindicator`). The self-drawn shared
8
+ * `ActivityIndicator` lives in the root export. */
9
+ export function CircularProgressIndicator(props: PlatformWidgetProps<ActivityIndicatorProps>) @{
10
+ if (props.busy === false) return null;
11
+
12
+ <activityindicator
13
+ id={props.id}
14
+ className={cx(props.className)}
15
+ style={props.style}
16
+ busy={props.busy ?? true}
17
+ ref={(el: any) => applyNativeProps(el, props)}
18
+ />
19
+ }
@@ -0,0 +1,48 @@
1
+ /** @jsxImportSource @nativescript-community/octane */
2
+ import { registerElement } from '@nativescript-community/octane';
3
+ import type { Attributes } from '@nativescript-community/octane/intrinsics';
4
+ import { Drawer as NSDrawer, install } from '@nativescript-community/ui-drawer';
5
+ import { useEffect, useRef } from 'octane';
6
+ import type { DrawerProps, PlatformWidgetProps } from '../props';
7
+ import { cx } from '../cx';
8
+ import { applyEscapeProps } from '../escape-props';
9
+
10
+ declare module '@nativescript-community/octane/intrinsics' {
11
+ interface NativeScriptElements {
12
+ drawer: Attributes<typeof NSDrawer>;
13
+ }
14
+ }
15
+
16
+ // Optional peer: this leaf resolves only when the app ships the plugin
17
+ // (isolated linker resolves it under the app root). install() registers the
18
+ // plugin's gesture handler once at module load. The self-drawn shared
19
+ // `Drawer` lives in the root export.
20
+ install();
21
+ registerElement('drawer', NSDrawer);
22
+
23
+ /** DrawerLayout — ui-drawer host (AndroidX DrawerLayout behavior via the
24
+ * plugin). `main`/`drawer` are slot props wired via the driver's hostSlot
25
+ * mechanism; `open` drives the imperative open()/close(). Slot hosts are
26
+ * gridlayout so each side stays multi-child. */
27
+ export function DrawerLayout(props: PlatformWidgetProps<DrawerProps>) @{
28
+ const host = useRef<NSDrawer | null>(null);
29
+
30
+ useEffect(() => {
31
+ const d = host.current;
32
+ if (!d) return;
33
+ if (props.open && !d.isOpened('left')) d.open('left').catch(() => {});
34
+ else if (!props.open && d.isOpened('left')) d.close('left').catch(() => {});
35
+ }, [props.open]);
36
+
37
+ <drawer
38
+ id={props.id}
39
+ ref={(d: any) => { host.current = d; applyEscapeProps(d, props); }}
40
+ className={cx('vx-drawer', props.className)}
41
+ style={props.style}
42
+ >
43
+ <gridlayout hostSlot="mainContent">{props.main}</gridlayout>
44
+ @if (props.drawer != null) {
45
+ <gridlayout hostSlot="leftDrawer">{props.drawer}</gridlayout>
46
+ }
47
+ </drawer>
48
+ }
@@ -0,0 +1,62 @@
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
+ function Panel(props: { children?: any }) @{
13
+ <>{props.children}</>
14
+ }
15
+
16
+ /** MaterialDialog — declarative `open` drives the platform modal
17
+ * presentation (`showModal`; fullscreen=false is a centered dialog sized
18
+ * to its content, not a bottom sheet). Renders nothing inline; the
19
+ * content lives on the modal's own root above the whole tree. The shared
20
+ * `ui` surface has no Modal — `Overlay`/`Sheet` are the self-drawn
21
+ * in-window versions. */
22
+ export function MaterialDialog(props: ModalProps) @{
23
+ const shown = useRef<{ host: GridLayout; root: any; unbindTheme?: () => void } | null>(null);
24
+
25
+ useEffect(() => {
26
+ if (props.open && !shown.current) {
27
+ const presenter = modalPresenter(Frame.topmost());
28
+ if (!presenter) {
29
+ // Dropped, not deferred: the effect only re-runs when props
30
+ // change, so warn loudly instead of silently swallowing open.
31
+ console.warn('[Modal] open dropped — no live presenter (currentPage mid-navigation or no active frame).');
32
+ return;
33
+ }
34
+ const host = new GridLayout();
35
+ const unbindTheme = applyThemeClasses(host, 'vx-modal-host');
36
+ const root = createNativeScriptRoot(host);
37
+ shown.current = { host, root, unbindTheme };
38
+ if (props.component) {
39
+ root.render(props.component as UniversalComponent, props.params ?? {});
40
+ } else {
41
+ root.render(Panel as unknown as UniversalComponent, { children: props.children });
42
+ }
43
+
44
+ const fullscreen = props.presentation
45
+ ? props.presentation === 'fullscreen'
46
+ : props.fullscreen ?? true;
47
+
48
+ presenter.showModal(host, {
49
+ context: {},
50
+ closeCallback: (result?: unknown) => { shown.current?.unbindTheme?.(); shown.current = null; props.onClose?.(result); },
51
+ fullscreen,
52
+ animated: true,
53
+ });
54
+ } else if (!props.open && shown.current) {
55
+ const { host } = shown.current;
56
+ shown.current = null;
57
+ host.closeModal();
58
+ }
59
+ }, [props.open]);
60
+
61
+ <></>
62
+ }
@@ -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
+ /** MaterialSwitch — the platform widget (Material SwitchMaterial via
7
+ * NativeScript `switch`). OS chrome is the point here; the self-drawn
8
+ * shared `Switch` lives in the root export. */
9
+ export function MaterialSwitch(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,173 @@
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('[RecyclerView] 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 RecyclerViewInner(props: {
42
+ className?: any;
43
+ style?: any;
44
+ id?: string;
45
+ items: any[];
46
+ renderItem: (item: any, index: number) => any;
47
+ onEndReached?: () => void;
48
+ android?: Record<string, any>;
49
+ modifiers?: PlatformWidgetProps<ListProps>['modifiers'];
50
+ refresh?: RefreshBag;
51
+ }) @{
52
+ const lv = useRef<any>(null);
53
+ useEffect(() => {
54
+ const bag = props.refresh;
55
+ if (!bag || !lv.current) return;
56
+ bag.ctl.current = createPullToRefresh({
57
+ scroller: lv.current,
58
+ indicator: bag.indicator.current,
59
+ isAtTop: () => (lv.current?.android?.computeVerticalScrollOffset?.() ?? 0) <= 0,
60
+ cfg: bag.cfg,
61
+ });
62
+
63
+ return () => {
64
+ bag.ctl.current?.detach();
65
+ bag.ctl.current = null;
66
+ };
67
+ }, []);
68
+
69
+ <listview
70
+ ref={(v: any) => {
71
+ lv.current = v;
72
+ applyEscapeProps(v, props);
73
+ }}
74
+ id={props.id}
75
+ className={cx(props.className)}
76
+ style={props.style}
77
+ items={props.items}
78
+ onLoadMoreItems={props.onEndReached}
79
+ onLoaded={rejectNestedScrollView}
80
+ renderItem={(item: any, index: number) => <gridlayout>{props.renderItem(item, index)}</gridlayout>}
81
+ {...props.android}
82
+ />
83
+ }
84
+
85
+ // The listview subtree is memoized on `items` and list configuration: the
86
+ // universal driver re-applies props on every render (no value diffing), and
87
+ // each write can trigger view-level side effects — measured: every unrelated
88
+ // parent re-render refired itemLoading for all visible cells. Memoized on the
89
+ // items reference and list configuration, unrelated parent re-renders skip
90
+ // this subtree. Constraint: `renderItem` should be identity-stable (a
91
+ // useCallback-style ref) — a fresh closure each render is deliberately
92
+ // not part of the compare. (`RecyclerViewInner` must precede this —
93
+ // compiled components are consts, not hoisted functions.)
94
+ const MemoListView = memo(RecyclerViewInner, (a, b) =>
95
+ a.items === b.items &&
96
+ a.className === b.className &&
97
+ a.style === b.style &&
98
+ a.id === b.id &&
99
+ a.onEndReached === b.onEndReached &&
100
+ a.android === b.android &&
101
+ a.modifiers === b.modifiers &&
102
+ a.refresh === b.refresh
103
+ );
104
+
105
+ /** RecyclerView — the platform recycling list (Android RecyclerView via
106
+ * NativeScript `listview`). `items` is a plain array, ItemsSource, or
107
+ * ObservableArray — the driver binds `items[index]` into the recycled
108
+ * cell's root and skips rebinds whose row, item, and renderer are
109
+ * unchanged. Cell identity = the recycled host view, not the item.
110
+ * The shared `ui` export has no List — compose ScrollView + mapped
111
+ * children there.
112
+ *
113
+ * `refreshing`/`onRefresh`/`refreshThreshold` enable pull-to-refresh:
114
+ * the indicator is self-drawn (vx-spinner) and the list is translated
115
+ * inside a clipped wrapper while the drag accumulates — no
116
+ * SwipeRefreshLayout, so the pixels match the shared ScrollView path. */
117
+ export function RecyclerView(props: PlatformWidgetProps<ListProps>) @{
118
+ const refreshCapable = props.onRefresh != null || props.refreshing != null;
119
+ const cfg = useRef<RefreshConfig>({});
120
+ cfg.current = {
121
+ onRefresh: props.onRefresh,
122
+ refreshing: props.refreshing,
123
+ threshold: props.refreshThreshold,
124
+ };
125
+
126
+ const indicator = useRef<any>(null);
127
+ const ctl = useRef<RefreshController | null>(null);
128
+ const refresh = useRef<RefreshBag>({ cfg, indicator, ctl });
129
+
130
+ useEffect(() => {
131
+ ctl.current?.sync();
132
+ }, [props.refreshing]);
133
+
134
+ @if (props.items.length > 0) {
135
+ @if (refreshCapable) {
136
+ <gridlayout className={cx('vx-refresh-wrap', props.className)} style={props.style}>
137
+ <MemoListView
138
+ id={props.id}
139
+ items={props.items}
140
+ renderItem={props.renderItem}
141
+ onEndReached={props.onEndReached}
142
+ android={props.android}
143
+ modifiers={props.modifiers}
144
+ refresh={refresh.current}
145
+ />
146
+ <flexboxlayout
147
+ ref={(v: any) => {
148
+ indicator.current = v;
149
+ }}
150
+ className="vx-refresh"
151
+ verticalAlignment="top"
152
+ height={REFRESH_HEADER_HEIGHT}
153
+ translateY={-REFRESH_HEADER_HEIGHT}
154
+ >
155
+ <ActivityIndicator />
156
+ </flexboxlayout>
157
+ </gridlayout>
158
+ } @else {
159
+ <MemoListView
160
+ id={props.id}
161
+ items={props.items}
162
+ className={props.className}
163
+ style={props.style}
164
+ renderItem={props.renderItem}
165
+ onEndReached={props.onEndReached}
166
+ android={props.android}
167
+ modifiers={props.modifiers}
168
+ />
169
+ }
170
+ } @else {
171
+ <>{props.renderEmpty?.()}</>
172
+ }
173
+ }
@@ -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
+ /** SeekBar — the platform widget (Android SeekBar via NativeScript
7
+ * `slider`). The self-drawn shared `Slider` lives in the root export. */
8
+ export function SeekBar(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,8 @@
1
+ import type { PlatformIconChoice } from '../props'
2
+
3
+ /** Selector for glyphs used by Android-authentic widgets; the shared root Icon is unchanged. */
4
+ export const Icon = {
5
+ select(choice: PlatformIconChoice): string {
6
+ return choice.android.startsWith('res://') ? choice.android : `res://drawable/${choice.android}`
7
+ },
8
+ }
@@ -0,0 +1,37 @@
1
+ // @octane-xplat/ui/android — Android-authentic widgets. OS chrome is the
2
+ // point: these resolve only in native builds (the `ui/android` subpath has
3
+ // no `web` export condition). Use inside `.android.tsrx`/`.mobile.tsrx`
4
+ // files, or behind `isAndroid` in native-default code — a shared `.tsrx` that
5
+ // imports this path fails the web build on purpose.
6
+
7
+ export { MaterialSwitch } from './MaterialSwitch.android.tsrx'
8
+ export { SeekBar } from './SeekBar.android.tsrx'
9
+ export { CircularProgressIndicator } from './CircularProgressIndicator.android.tsrx'
10
+ export { RecyclerView } from './RecyclerView.android.tsrx'
11
+ export { BottomNavigationView } from './BottomNavigationView.android.tsrx'
12
+ export type { PlatformTabSpec as TabSpec } from '../props'
13
+ export { MaterialDialog } from './MaterialDialog.android.tsrx'
14
+ export { openModal } from './openModal.android'
15
+ export { DrawerLayout } from './DrawerLayout.android.tsrx'
16
+ export { Icon } from './icon.android'
17
+ export { modifier } from '../modifier-factories'
18
+
19
+ export type {
20
+ SwitchProps,
21
+ SliderProps,
22
+ ActivityIndicatorProps,
23
+ ListProps,
24
+ TabsProps,
25
+ ModalProps,
26
+ ModalOpenOptions,
27
+ ModalOpenResult,
28
+ OpenModal,
29
+ DrawerProps,
30
+ NativeModifier,
31
+ NativeModifierValue,
32
+ PlatformIconChoice,
33
+ PlatformTabSpec,
34
+ PlatformTabsProps,
35
+ PlatformWidgetProps,
36
+ RefreshProps,
37
+ } 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 Android fullscreen=false is
46
+ // a centered dialog sized to its content.
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,20 @@
1
+ import type { AnimatedValue } from './props'
2
+
3
+ /** AppKit animation writes currently commit their target value immediately.
4
+ * This preserves the shared hook surface while the host animation driver is
5
+ * still unsupported. */
6
+ export function useAnimation(initial = 0, property = 'opacity'): AnimatedValue {
7
+ let value = initial
8
+ let view: any
9
+ const write = (next: number) => {
10
+ value = next
11
+ if (view) {view[property] = next}
12
+ }
13
+ return {
14
+ get value() { return value },
15
+ bind(el: any) { view = el; write(value) },
16
+ to(target: number) { write(target) },
17
+ spring(target: number) { write(target) },
18
+ stop() {},
19
+ }
20
+ }