@octane-xplat/ui 0.6.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 (776) 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/index.shared.web.js +92 -0
  148. package/dist/web/octane-client-build.json +1 -1
  149. package/dist/web/platform.web.js +1 -1
  150. package/dist/web/route-table.js +105 -4
  151. package/dist/web/route.web.js +36 -11
  152. package/dist/web/ui.js +10 -8
  153. package/dist/web/virtual-list-layout.js +146 -0
  154. package/dist/web/web/index.js +2 -2
  155. package/package.json +35 -23
  156. package/platforms/android/include.gradle +8 -0
  157. package/platforms/android/native-api-usage.json +8 -0
  158. package/platforms/ios/Podfile +2 -0
  159. package/src/Absolute.tsrx +22 -0
  160. package/src/Absolute.web.tsrx +22 -0
  161. package/src/Accordion.macos.tsrx +50 -0
  162. package/src/Accordion.tsrx +50 -0
  163. package/src/Accordion.web.tsrx +43 -0
  164. package/src/ActivityIndicator.tsrx +29 -0
  165. package/src/ActivityIndicator.web.tsrx +14 -0
  166. package/src/Alert.macos.tsrx +42 -0
  167. package/src/Alert.tsrx +24 -0
  168. package/src/Alert.web.tsrx +23 -0
  169. package/src/Avatar.macos.tsrx +25 -0
  170. package/src/Avatar.tsrx +25 -0
  171. package/src/Avatar.web.tsrx +24 -0
  172. package/src/AvatarGroup.macos.tsrx +32 -0
  173. package/src/AvatarGroup.tsrx +32 -0
  174. package/src/AvatarGroup.web.tsrx +29 -0
  175. package/src/Badge.macos.tsrx +12 -0
  176. package/src/Badge.tsrx +12 -0
  177. package/src/Badge.web.tsrx +10 -0
  178. package/src/Banner.macos.tsrx +20 -0
  179. package/src/Banner.tsrx +20 -0
  180. package/src/Banner.web.tsrx +20 -0
  181. package/src/Breadcrumb.macos.tsrx +27 -0
  182. package/src/Breadcrumb.tsrx +27 -0
  183. package/src/Breadcrumb.web.tsrx +25 -0
  184. package/src/Button.tsrx +23 -0
  185. package/src/Button.web.tsrx +21 -0
  186. package/src/CameraView.macos.tsrx +6 -0
  187. package/src/Card.macos.tsrx +13 -0
  188. package/src/Card.tsrx +13 -0
  189. package/src/Card.web.tsrx +11 -0
  190. package/src/Checkbox.tsrx +23 -0
  191. package/src/Checkbox.web.tsrx +34 -0
  192. package/src/CheckboxGroup.macos.tsrx +39 -0
  193. package/src/CheckboxGroup.tsrx +39 -0
  194. package/src/CheckboxGroup.web.tsrx +38 -0
  195. package/src/Chip.macos.tsrx +25 -0
  196. package/src/Chip.tsrx +25 -0
  197. package/src/Chip.web.tsrx +25 -0
  198. package/src/Collapsible.macos.tsrx +39 -0
  199. package/src/Collapsible.tsrx +39 -0
  200. package/src/Collapsible.web.tsrx +33 -0
  201. package/src/CommandPalette.macos.tsrx +58 -0
  202. package/src/CommandPalette.tsrx +58 -0
  203. package/src/CommandPalette.web.tsrx +59 -0
  204. package/src/ContextMenu.macos.tsrx +59 -0
  205. package/src/ContextMenu.tsrx +59 -0
  206. package/src/ContextMenu.web.tsrx +69 -0
  207. package/src/Drawer.macos.tsrx +28 -0
  208. package/src/Drawer.tsrx +25 -0
  209. package/src/Drawer.web.tsrx +31 -0
  210. package/src/DropdownMenu.macos.tsrx +63 -0
  211. package/src/DropdownMenu.tsrx +63 -0
  212. package/src/DropdownMenu.web.tsrx +78 -0
  213. package/src/Empty.macos.tsrx +15 -0
  214. package/src/Empty.tsrx +15 -0
  215. package/src/Empty.web.tsrx +13 -0
  216. package/src/FieldGroup.macos.tsrx +17 -0
  217. package/src/FieldGroup.tsrx +17 -0
  218. package/src/FieldGroup.web.tsrx +17 -0
  219. package/src/FormField.macos.tsrx +25 -0
  220. package/src/FormField.tsrx +25 -0
  221. package/src/FormField.web.tsrx +24 -0
  222. package/src/Grid.tsrx +32 -0
  223. package/src/Grid.web.tsrx +43 -0
  224. package/src/Heading.macos.tsrx +8 -0
  225. package/src/Heading.tsrx +17 -0
  226. package/src/Heading.web.tsrx +15 -0
  227. package/src/Hoverable.mobile.tsrx +21 -0
  228. package/src/Hoverable.tsrx +113 -0
  229. package/src/Hoverable.web.tsrx +98 -0
  230. package/src/Icon.macos.tsrx +18 -0
  231. package/src/Icon.tsrx +65 -0
  232. package/src/Icon.web.tsrx +75 -0
  233. package/src/Image.macos.tsrx +12 -0
  234. package/src/Image.tsrx +51 -0
  235. package/src/Image.web.tsrx +14 -0
  236. package/src/InputNumber.macos.tsrx +49 -0
  237. package/src/InputNumber.tsrx +49 -0
  238. package/src/InputNumber.web.tsrx +47 -0
  239. package/src/InputRating.macos.tsrx +42 -0
  240. package/src/InputRating.tsrx +39 -0
  241. package/src/InputRating.web.tsrx +52 -0
  242. package/src/InputTags.macos.tsrx +49 -0
  243. package/src/InputTags.tsrx +49 -0
  244. package/src/InputTags.web.tsrx +49 -0
  245. package/src/Kbd.macos.tsrx +11 -0
  246. package/src/Kbd.tsrx +11 -0
  247. package/src/Kbd.web.tsrx +9 -0
  248. package/src/KeyboardAvoiding.macos.tsrx +8 -0
  249. package/src/KeyboardAvoiding.mobile.tsrx +63 -0
  250. package/src/Link.macos.tsrx +15 -0
  251. package/src/Link.tsrx +10 -0
  252. package/src/Link.web.tsrx +12 -0
  253. package/src/ListItem.macos.tsrx +52 -0
  254. package/src/ListItem.tsrx +52 -0
  255. package/src/ListItem.web.tsrx +50 -0
  256. package/src/Meter.macos.tsrx +8 -0
  257. package/src/Meter.tsrx +45 -0
  258. package/src/Meter.web.tsrx +32 -0
  259. package/src/NavLink.macos.tsrx +24 -0
  260. package/src/NavLink.tsrx +22 -0
  261. package/src/NavLink.web.tsrx +23 -0
  262. package/src/NavigationMenu.macos.tsrx +31 -0
  263. package/src/NavigationMenu.tsrx +28 -0
  264. package/src/NavigationMenu.web.tsrx +31 -0
  265. package/src/Overlay.macos.tsrx +11 -0
  266. package/src/Overlay.tsrx +84 -0
  267. package/src/Overlay.web.tsrx +23 -0
  268. package/src/Pagination.macos.tsrx +54 -0
  269. package/src/Pagination.tsrx +47 -0
  270. package/src/Pagination.web.tsrx +50 -0
  271. package/src/PinInput.macos.tsrx +46 -0
  272. package/src/PinInput.tsrx +46 -0
  273. package/src/PinInput.web.tsrx +45 -0
  274. package/src/Popover.macos.tsrx +11 -0
  275. package/src/Popover.tsrx +157 -0
  276. package/src/Popover.web.tsrx +109 -0
  277. package/src/Pressable.macos.tsrx +19 -0
  278. package/src/Pressable.tsrx +37 -0
  279. package/src/Pressable.web.tsrx +45 -0
  280. package/src/ProgressGroup.macos.tsrx +17 -0
  281. package/src/ProgressGroup.tsrx +17 -0
  282. package/src/ProgressGroup.web.tsrx +15 -0
  283. package/src/RadioGroup.macos.tsrx +50 -0
  284. package/src/RadioGroup.tsrx +34 -0
  285. package/src/RadioGroup.web.tsrx +43 -0
  286. package/src/RichText.tsrx +40 -0
  287. package/src/RichText.web.tsrx +24 -0
  288. package/src/RouteHost.macos.tsrx +18 -0
  289. package/src/RouteHost.mobile.tsrx +44 -0
  290. package/src/Row.macos.tsrx +26 -0
  291. package/src/Row.tsrx +27 -0
  292. package/src/Row.web.tsrx +27 -0
  293. package/src/SafeArea.macos.tsrx +8 -0
  294. package/src/SafeArea.tsrx +20 -0
  295. package/src/SafeArea.web.tsrx +24 -0
  296. package/src/Screen.macos.tsrx +14 -0
  297. package/src/Screen.tsrx +31 -0
  298. package/src/Screen.web.tsrx +7 -0
  299. package/src/ScrollBox.tsrx +8 -0
  300. package/src/ScrollBox.web.tsrx +7 -0
  301. package/src/ScrollView.macos.tsrx +19 -0
  302. package/src/ScrollView.tsrx +117 -0
  303. package/src/ScrollView.web.tsrx +109 -0
  304. package/src/SearchInput.tsrx +60 -0
  305. package/src/SearchInput.web.test.tsrx +58 -0
  306. package/src/SearchInput.web.tsrx +55 -0
  307. package/src/SegmentedControl.tsrx +43 -0
  308. package/src/SegmentedControl.web.test.tsrx +46 -0
  309. package/src/SegmentedControl.web.tsrx +51 -0
  310. package/src/Select.macos.tsrx +104 -0
  311. package/src/Select.tsrx +104 -0
  312. package/src/Select.web.tsrx +124 -0
  313. package/src/Separator.macos.tsrx +17 -0
  314. package/src/Separator.tsrx +17 -0
  315. package/src/Separator.web.tsrx +17 -0
  316. package/src/Sheet.macos.tsrx +15 -0
  317. package/src/Sheet.tsrx +122 -0
  318. package/src/Sheet.web.tsrx +56 -0
  319. package/src/Skeleton.macos.tsrx +15 -0
  320. package/src/Skeleton.tsrx +15 -0
  321. package/src/Skeleton.web.tsrx +15 -0
  322. package/src/Slider.tsrx +71 -0
  323. package/src/Slider.web.tsrx +60 -0
  324. package/src/Spacer.tsrx +8 -0
  325. package/src/Spacer.web.tsrx +6 -0
  326. package/src/Stack.tsrx +24 -0
  327. package/src/Stack.web.tsrx +22 -0
  328. package/src/Stepper.macos.tsrx +52 -0
  329. package/src/Stepper.tsrx +31 -0
  330. package/src/Stepper.web.tsrx +37 -0
  331. package/src/Switch.tsrx +21 -0
  332. package/src/Switch.web.tsrx +28 -0
  333. package/src/Table.macos.tsrx +37 -0
  334. package/src/Table.tsrx +37 -0
  335. package/src/Table.web.tsrx +37 -0
  336. package/src/Tabs.macos.tsrx +60 -0
  337. package/src/Tabs.tsrx +55 -0
  338. package/src/Tabs.web.tsrx +98 -0
  339. package/src/Text.macos.tsrx +18 -0
  340. package/src/Text.tsrx +62 -0
  341. package/src/Text.web.tsrx +31 -0
  342. package/src/TextArea.tsrx +65 -0
  343. package/src/TextArea.web.tsrx +61 -0
  344. package/src/TextInput.tsrx +39 -0
  345. package/src/TextInput.web.tsrx +28 -0
  346. package/src/Timeline.macos.tsrx +27 -0
  347. package/src/Timeline.tsrx +24 -0
  348. package/src/Timeline.web.tsrx +22 -0
  349. package/src/Tooltip.mobile.tsrx +20 -0
  350. package/src/Tooltip.tsrx +102 -0
  351. package/src/Tooltip.web.tsrx +156 -0
  352. package/src/Tree.macos.tsrx +45 -0
  353. package/src/Tree.tsrx +45 -0
  354. package/src/Tree.web.tsrx +52 -0
  355. package/src/User.macos.tsrx +24 -0
  356. package/src/User.tsrx +24 -0
  357. package/src/User.web.tsrx +24 -0
  358. package/src/View.macos.tsrx +29 -0
  359. package/src/View.tsrx +32 -0
  360. package/src/View.web.tsrx +33 -0
  361. package/src/VirtualList.macos.tsrx +298 -0
  362. package/src/VirtualList.tsrx +358 -0
  363. package/src/VirtualList.web.tsrx +313 -0
  364. package/src/WebView.macos.tsrx +6 -0
  365. package/src/WebView.tsrx +89 -0
  366. package/src/WebView.web.tsrx +92 -0
  367. package/src/aliases.macos.tsrx +18 -0
  368. package/src/aliases.tsrx +18 -0
  369. package/src/aliases.web.tsrx +17 -0
  370. package/src/android/BottomNavigationView.android.tsrx +170 -0
  371. package/src/android/CircularProgressIndicator.android.tsrx +19 -0
  372. package/src/android/DrawerLayout.android.tsrx +48 -0
  373. package/src/android/MaterialDialog.android.tsrx +62 -0
  374. package/src/android/MaterialSwitch.android.tsrx +18 -0
  375. package/src/android/RecyclerView.android.tsrx +173 -0
  376. package/src/android/SeekBar.android.tsrx +20 -0
  377. package/src/android/icon.android.ts +8 -0
  378. package/src/android/index.ts +37 -0
  379. package/src/android/openModal.android.ts +55 -0
  380. package/src/anim.macos.tsrx +20 -0
  381. package/src/anim.tsrx +65 -0
  382. package/src/anim.web.tsrx +55 -0
  383. package/src/apply-native-modifiers.native.ts +13 -0
  384. package/src/camera-permission.web.ts +11 -0
  385. package/src/child-array.ts +16 -0
  386. package/src/colorScheme.macos.ts +27 -0
  387. package/src/controls.macos.tsrx +171 -0
  388. package/src/cx.ts +8 -0
  389. package/src/escape-props.macos.ts +11 -0
  390. package/src/escape-props.ts +70 -0
  391. package/src/escape-props.web.ts +25 -0
  392. package/src/hosted-unsupported.macos.tsrx +9 -0
  393. package/src/icons.ts +60 -0
  394. package/src/index.linux.ts +10 -0
  395. package/src/index.macos.ts +106 -0
  396. package/src/index.mobile.ts +6 -0
  397. package/src/index.shared.ts +269 -0
  398. package/src/index.shared.web.ts +270 -0
  399. package/src/index.ts +1 -0
  400. package/src/index.web.ts +1 -0
  401. package/src/ios/LiquidGlass.ios.tsrx +41 -0
  402. package/src/ios/LiquidGlassContainer.ios.tsrx +34 -0
  403. package/src/ios/SideDrawer.ios.tsrx +49 -0
  404. package/src/ios/UIActivityIndicatorView.ios.tsrx +18 -0
  405. package/src/ios/UIModal.ios.tsrx +68 -0
  406. package/src/ios/UISlider.ios.tsrx +20 -0
  407. package/src/ios/UISwitch.ios.tsrx +18 -0
  408. package/src/ios/UITabBar.ios.tsrx +172 -0
  409. package/src/ios/UITableView.ios.tsrx +186 -0
  410. package/src/ios/icon.ios.ts +8 -0
  411. package/src/ios/index.ts +42 -0
  412. package/src/ios/openModal.ios.ts +55 -0
  413. package/src/keyboard-inset.mobile.ts +89 -0
  414. package/src/layout-child.ts +57 -0
  415. package/src/layout-child.web.ts +108 -0
  416. package/src/layout-shells.macos.tsrx +10 -0
  417. package/src/layout.macos.tsrx +41 -0
  418. package/src/macos-extras.macos.tsrx +40 -0
  419. package/src/meter-math.ts +6 -0
  420. package/src/modal-presenter.mobile.ts +24 -0
  421. package/src/modifier-factories.ts +20 -0
  422. package/src/native/index.ts +6 -0
  423. package/src/pan.tsrx +64 -0
  424. package/src/pan.web.tsrx +38 -0
  425. package/src/platform.macos.ts +1 -0
  426. package/src/platform.ts +7 -0
  427. package/src/platform.web.ts +6 -0
  428. package/src/platformProps.ts +23 -0
  429. package/src/platformProps.web.ts +14 -0
  430. package/src/popover-position.ts +62 -0
  431. package/src/popover.mobile.test.ts +54 -0
  432. package/src/props.ts +1812 -0
  433. package/src/references.d.ts +2 -0
  434. package/src/refresh-metrics.ts +11 -0
  435. package/src/refresh.ts +271 -0
  436. package/src/refresh.web.test.ts +111 -0
  437. package/src/refresh.web.ts +205 -0
  438. package/src/root-layout.mobile.ts +89 -0
  439. package/src/route-host.mobile.ts +1 -0
  440. package/src/route-table.test.ts +345 -0
  441. package/src/route-table.ts +585 -0
  442. package/src/route.macos.ts +201 -0
  443. package/src/route.ts +703 -0
  444. package/src/route.web.ts +366 -0
  445. package/src/safeAreaInsets.macos.tsrx +7 -0
  446. package/src/safeAreaInsets.tsrx +60 -0
  447. package/src/safeAreaInsets.web.tsrx +38 -0
  448. package/src/sheet-detents.ts +142 -0
  449. package/src/sheet-detents.web.ts +147 -0
  450. package/src/sheet-service.macos.ts +60 -0
  451. package/src/sheet-service.ts +124 -0
  452. package/src/sheet-service.web.ts +64 -0
  453. package/src/sheet-snap.test.ts +46 -0
  454. package/src/sheet-snap.ts +66 -0
  455. package/src/stacks.macos.ts +13 -0
  456. package/src/stacks.ts +44 -0
  457. package/src/stacks.web.ts +9 -0
  458. package/src/store.mobile.test.ts +149 -0
  459. package/src/store.ts +39 -0
  460. package/src/store.web.test.tsrx +58 -0
  461. package/src/styled.macos.tsrx +23 -0
  462. package/src/styled.test.ts +40 -0
  463. package/src/styled.tsrx +36 -0
  464. package/src/styled.web.tsrx +23 -0
  465. package/src/surfaces.macos.tsrx +27 -0
  466. package/src/svg.mobile.ts +76 -0
  467. package/src/tap-to-blur.mobile.ts +108 -0
  468. package/src/text-controls.macos.tsrx +11 -0
  469. package/src/text-write.ts +28 -0
  470. package/src/text-write.web.ts +13 -0
  471. package/src/theme/colorScheme.linux.ts +52 -0
  472. package/src/theme/colorScheme.ts +26 -0
  473. package/src/theme/colorScheme.web.ts +20 -0
  474. package/src/theme/status-bar-scheme.mobile.ts +39 -0
  475. package/src/theme/theme-scheme.macos.ts +50 -0
  476. package/src/theme/theme-scheme.ts +66 -0
  477. package/src/theme/tokens.css +44 -22
  478. package/src/toast-anchor.macos.tsrx +3 -0
  479. package/src/toast-anchor.tsrx +122 -0
  480. package/src/toast-anchor.web.tsrx +92 -0
  481. package/src/toast.tsrx +90 -0
  482. package/src/toast.web.tsrx +50 -0
  483. package/src/transform.web.ts +52 -0
  484. package/src/translate.macos.ts +5 -0
  485. package/src/translate.ts +13 -0
  486. package/src/translate.web.ts +15 -0
  487. package/src/tsconfig.json +8 -0
  488. package/src/unsupported.macos.tsrx +5 -0
  489. package/src/use-back.tsrx +11 -0
  490. package/src/use-back.web.tsrx +12 -0
  491. package/src/use-store.tsrx +18 -0
  492. package/src/use-store.web.tsrx +18 -0
  493. package/src/useMeasure.macos.tsrx +23 -0
  494. package/src/useMeasure.tsrx +66 -0
  495. package/src/useMeasure.web.tsrx +39 -0
  496. package/src/useStore.macos.tsrx +6 -0
  497. package/src/vendor/ui-svg/LICENSE +201 -0
  498. package/src/vendor/ui-svg/index.android.ts +189 -0
  499. package/src/vendor/ui-svg/index.common.ts +19 -0
  500. package/src/vendor/ui-svg/index.ios.ts +147 -0
  501. package/src/vendor/ui-svg/index.ts +1 -0
  502. package/src/vendor/ui-svg/typings/SVGKit.d.ts +2862 -0
  503. package/src/vendor/ui-svg/typings/android.d.ts +1483 -0
  504. package/src/vendor/ui-svg/typings/ios.d.ts +1511 -0
  505. package/src/virtual-list-layout.test.ts +81 -0
  506. package/src/virtual-list-layout.ts +246 -0
  507. package/src/web/index.ts +11 -0
  508. package/src/windows.linux.ts +59 -0
  509. package/src/windows.macos.ts +10 -0
  510. package/src/windows.ts +7 -0
  511. package/src/windows.web.ts +6 -0
  512. package/types/generated/.tsrx-typegen-manifest.json +250 -0
  513. package/types/generated/Absolute.d.ts +3 -0
  514. package/types/generated/Absolute.web.d.ts +3 -0
  515. package/types/generated/Accordion.d.ts +5 -0
  516. package/types/generated/Accordion.web.d.ts +5 -0
  517. package/types/generated/ActivityIndicator.d.ts +7 -0
  518. package/types/generated/ActivityIndicator.web.d.ts +3 -0
  519. package/types/generated/Alert.d.ts +4 -0
  520. package/types/generated/Alert.web.d.ts +5 -0
  521. package/types/generated/Avatar.d.ts +6 -0
  522. package/types/generated/Avatar.web.d.ts +7 -0
  523. package/types/generated/AvatarGroup.d.ts +6 -0
  524. package/types/generated/AvatarGroup.web.d.ts +6 -0
  525. package/types/generated/Badge.d.ts +5 -0
  526. package/types/generated/Badge.web.d.ts +5 -0
  527. package/types/generated/Banner.d.ts +4 -0
  528. package/types/generated/Banner.web.d.ts +4 -0
  529. package/types/generated/Breadcrumb.d.ts +4 -0
  530. package/types/generated/Breadcrumb.web.d.ts +5 -0
  531. package/types/generated/Button.d.ts +6 -0
  532. package/types/generated/Button.web.d.ts +6 -0
  533. package/types/generated/Card.d.ts +4 -0
  534. package/types/generated/Card.web.d.ts +4 -0
  535. package/types/generated/Checkbox.d.ts +5 -0
  536. package/types/generated/Checkbox.web.d.ts +6 -0
  537. package/types/generated/CheckboxGroup.d.ts +3 -0
  538. package/types/generated/CheckboxGroup.web.d.ts +3 -0
  539. package/types/generated/Chip.d.ts +5 -0
  540. package/types/generated/Chip.web.d.ts +5 -0
  541. package/types/generated/Collapsible.d.ts +5 -0
  542. package/types/generated/Collapsible.web.d.ts +5 -0
  543. package/types/generated/CommandPalette.d.ts +4 -0
  544. package/types/generated/CommandPalette.web.d.ts +4 -0
  545. package/types/generated/ContextMenu.d.ts +5 -0
  546. package/types/generated/ContextMenu.web.d.ts +4 -0
  547. package/types/generated/Drawer.d.ts +7 -0
  548. package/types/generated/Drawer.web.d.ts +7 -0
  549. package/types/generated/DropdownMenu.d.ts +5 -0
  550. package/types/generated/DropdownMenu.web.d.ts +5 -0
  551. package/types/generated/Empty.d.ts +4 -0
  552. package/types/generated/Empty.web.d.ts +4 -0
  553. package/types/generated/FieldGroup.d.ts +4 -0
  554. package/types/generated/FieldGroup.web.d.ts +4 -0
  555. package/types/generated/FormField.d.ts +5 -0
  556. package/types/generated/FormField.web.d.ts +5 -0
  557. package/types/generated/Grid.d.ts +3 -0
  558. package/types/generated/Grid.web.d.ts +3 -0
  559. package/types/generated/Heading.d.ts +2 -0
  560. package/types/generated/Heading.web.d.ts +2 -0
  561. package/types/generated/Hoverable.d.ts +10 -0
  562. package/types/generated/Hoverable.web.d.ts +9 -0
  563. package/types/generated/Icon.d.ts +3 -0
  564. package/types/generated/Icon.web.d.ts +3 -0
  565. package/types/generated/Image.d.ts +7 -0
  566. package/types/generated/Image.web.d.ts +3 -0
  567. package/types/generated/InputNumber.d.ts +5 -0
  568. package/types/generated/InputNumber.web.d.ts +5 -0
  569. package/types/generated/InputRating.d.ts +4 -0
  570. package/types/generated/InputRating.web.d.ts +4 -0
  571. package/types/generated/InputTags.d.ts +4 -0
  572. package/types/generated/InputTags.web.d.ts +5 -0
  573. package/types/generated/Kbd.d.ts +4 -0
  574. package/types/generated/Kbd.web.d.ts +4 -0
  575. package/types/generated/KeyboardAvoiding.mobile.d.ts +2 -0
  576. package/types/generated/Link.d.ts +2 -0
  577. package/types/generated/Link.web.d.ts +3 -0
  578. package/types/generated/ListItem.d.ts +3 -0
  579. package/types/generated/ListItem.web.d.ts +3 -0
  580. package/types/generated/Meter.d.ts +3 -0
  581. package/types/generated/Meter.web.d.ts +3 -0
  582. package/types/generated/NavLink.d.ts +3 -0
  583. package/types/generated/NavLink.web.d.ts +3 -0
  584. package/types/generated/NavigationMenu.d.ts +4 -0
  585. package/types/generated/NavigationMenu.web.d.ts +5 -0
  586. package/types/generated/Overlay.d.ts +3 -0
  587. package/types/generated/Overlay.web.d.ts +3 -0
  588. package/types/generated/Pagination.d.ts +4 -0
  589. package/types/generated/Pagination.web.d.ts +5 -0
  590. package/types/generated/PinInput.d.ts +4 -0
  591. package/types/generated/PinInput.web.d.ts +4 -0
  592. package/types/generated/Popover.d.ts +6 -0
  593. package/types/generated/Popover.web.d.ts +3 -0
  594. package/types/generated/Pressable.d.ts +6 -0
  595. package/types/generated/Pressable.web.d.ts +2 -0
  596. package/types/generated/ProgressGroup.d.ts +3 -0
  597. package/types/generated/ProgressGroup.web.d.ts +4 -0
  598. package/types/generated/RadioGroup.d.ts +5 -0
  599. package/types/generated/RadioGroup.web.d.ts +5 -0
  600. package/types/generated/RichText.d.ts +7 -0
  601. package/types/generated/RichText.web.d.ts +3 -0
  602. package/types/generated/RouteHost.mobile.d.ts +14 -0
  603. package/types/generated/Row.d.ts +2 -0
  604. package/types/generated/Row.web.d.ts +2 -0
  605. package/types/generated/SafeArea.d.ts +2 -0
  606. package/types/generated/SafeArea.web.d.ts +3 -0
  607. package/types/generated/Screen.d.ts +3 -0
  608. package/types/generated/Screen.web.d.ts +3 -0
  609. package/types/generated/ScrollBox.d.ts +3 -0
  610. package/types/generated/ScrollBox.web.d.ts +3 -0
  611. package/types/generated/ScrollView.d.ts +7 -0
  612. package/types/generated/ScrollView.web.d.ts +6 -0
  613. package/types/generated/SearchInput.d.ts +7 -0
  614. package/types/generated/SearchInput.web.d.ts +6 -0
  615. package/types/generated/SegmentedControl.d.ts +7 -0
  616. package/types/generated/SegmentedControl.web.d.ts +6 -0
  617. package/types/generated/Select.d.ts +6 -0
  618. package/types/generated/Select.web.d.ts +6 -0
  619. package/types/generated/Separator.d.ts +5 -0
  620. package/types/generated/Separator.web.d.ts +5 -0
  621. package/types/generated/Sheet.d.ts +5 -0
  622. package/types/generated/Sheet.web.d.ts +7 -0
  623. package/types/generated/Skeleton.d.ts +5 -0
  624. package/types/generated/Skeleton.web.d.ts +6 -0
  625. package/types/generated/Slider.d.ts +6 -0
  626. package/types/generated/Slider.web.d.ts +6 -0
  627. package/types/generated/Spacer.d.ts +3 -0
  628. package/types/generated/Spacer.web.d.ts +3 -0
  629. package/types/generated/Stack.d.ts +3 -0
  630. package/types/generated/Stack.web.d.ts +3 -0
  631. package/types/generated/Stepper.d.ts +4 -0
  632. package/types/generated/Stepper.web.d.ts +5 -0
  633. package/types/generated/Switch.d.ts +7 -0
  634. package/types/generated/Switch.web.d.ts +6 -0
  635. package/types/generated/Table.d.ts +4 -0
  636. package/types/generated/Table.web.d.ts +5 -0
  637. package/types/generated/Tabs.d.ts +10 -0
  638. package/types/generated/Tabs.web.d.ts +6 -0
  639. package/types/generated/Text.d.ts +2 -0
  640. package/types/generated/Text.web.d.ts +2 -0
  641. package/types/generated/TextArea.d.ts +8 -0
  642. package/types/generated/TextArea.web.d.ts +9 -0
  643. package/types/generated/TextInput.d.ts +9 -0
  644. package/types/generated/TextInput.web.d.ts +2 -0
  645. package/types/generated/Timeline.d.ts +3 -0
  646. package/types/generated/Timeline.web.d.ts +4 -0
  647. package/types/generated/Tooltip.d.ts +9 -0
  648. package/types/generated/Tooltip.web.d.ts +12 -0
  649. package/types/generated/Tree.d.ts +4 -0
  650. package/types/generated/Tree.web.d.ts +4 -0
  651. package/types/generated/User.d.ts +5 -0
  652. package/types/generated/User.web.d.ts +5 -0
  653. package/types/generated/View.d.ts +7 -0
  654. package/types/generated/View.web.d.ts +7 -0
  655. package/types/generated/VirtualList.d.ts +5 -0
  656. package/types/generated/VirtualList.web.d.ts +4 -0
  657. package/types/generated/WebView.d.ts +11 -0
  658. package/types/generated/WebView.web.d.ts +5 -0
  659. package/types/generated/aliases.d.ts +7 -0
  660. package/types/generated/aliases.web.d.ts +7 -0
  661. package/types/generated/android/BottomNavigationView.android.d.ts +9 -0
  662. package/types/generated/android/CircularProgressIndicator.android.d.ts +6 -0
  663. package/types/generated/android/DrawerLayout.android.d.ts +12 -0
  664. package/types/generated/android/MaterialDialog.android.d.ts +8 -0
  665. package/types/generated/android/MaterialSwitch.android.d.ts +6 -0
  666. package/types/generated/android/RecyclerView.android.d.ts +14 -0
  667. package/types/generated/android/SeekBar.android.d.ts +5 -0
  668. package/types/generated/android/icon.android.d.ts +5 -0
  669. package/types/generated/android/index.d.ts +12 -0
  670. package/types/generated/android/openModal.android.d.ts +4 -0
  671. package/types/generated/anim.d.ts +10 -0
  672. package/types/generated/anim.web.d.ts +3 -0
  673. package/types/generated/apply-native-modifiers.native.d.ts +3 -0
  674. package/types/generated/child-array.d.ts +3 -0
  675. package/types/generated/cx.d.ts +6 -0
  676. package/types/generated/escape-props.d.ts +16 -0
  677. package/types/generated/icons.d.ts +5 -0
  678. package/types/generated/index.d.ts +1 -0
  679. package/types/generated/index.linux.d.ts +5 -0
  680. package/types/generated/index.mobile.d.ts +4 -0
  681. package/types/generated/index.shared.d.ts +111 -0
  682. package/types/generated/index.shared.web.d.ts +111 -0
  683. package/types/generated/index.web.d.ts +1 -0
  684. package/types/generated/ios/LiquidGlass.ios.d.ts +12 -0
  685. package/types/generated/ios/LiquidGlassContainer.ios.d.ts +13 -0
  686. package/types/generated/ios/SideDrawer.ios.d.ts +12 -0
  687. package/types/generated/ios/UIActivityIndicatorView.ios.d.ts +5 -0
  688. package/types/generated/ios/UIModal.ios.d.ts +7 -0
  689. package/types/generated/ios/UISlider.ios.d.ts +5 -0
  690. package/types/generated/ios/UISwitch.ios.d.ts +6 -0
  691. package/types/generated/ios/UITabBar.ios.d.ts +7 -0
  692. package/types/generated/ios/UITableView.ios.d.ts +14 -0
  693. package/types/generated/ios/icon.ios.d.ts +5 -0
  694. package/types/generated/ios/index.d.ts +14 -0
  695. package/types/generated/ios/openModal.ios.d.ts +4 -0
  696. package/types/generated/keyboard-inset.mobile.d.ts +10 -0
  697. package/types/generated/layout-child.d.ts +6 -0
  698. package/types/generated/layout-child.web.d.ts +15 -0
  699. package/types/generated/meter-math.d.ts +6 -0
  700. package/types/generated/modal-presenter.mobile.d.ts +14 -0
  701. package/types/generated/modifier-factories.d.ts +15 -0
  702. package/types/generated/native/index.d.ts +3 -0
  703. package/types/generated/pan.d.ts +2 -0
  704. package/types/generated/pan.web.d.ts +9 -0
  705. package/types/generated/platform.d.ts +7 -0
  706. package/types/generated/platform.web.d.ts +6 -0
  707. package/types/generated/platformProps.d.ts +7 -0
  708. package/types/generated/platformProps.web.d.ts +2 -0
  709. package/types/generated/popover-position.d.ts +14 -0
  710. package/types/{props.d.ts → generated/props.d.ts} +127 -133
  711. package/types/generated/refresh-metrics.d.ts +8 -0
  712. package/types/generated/refresh.d.ts +42 -0
  713. package/types/generated/refresh.web.d.ts +23 -0
  714. package/types/generated/root-layout.mobile.d.ts +22 -0
  715. package/types/generated/route-host.mobile.d.ts +1 -0
  716. package/types/generated/route-table.d.ts +90 -0
  717. package/types/generated/route.d.ts +74 -0
  718. package/types/generated/route.web.d.ts +67 -0
  719. package/types/generated/safeAreaInsets.d.ts +8 -0
  720. package/types/generated/safeAreaInsets.web.d.ts +8 -0
  721. package/types/generated/sheet-detents.d.ts +23 -0
  722. package/types/generated/sheet-detents.web.d.ts +13 -0
  723. package/types/generated/sheet-service.d.ts +11 -0
  724. package/types/generated/sheet-service.web.d.ts +6 -0
  725. package/types/generated/sheet-snap.d.ts +18 -0
  726. package/types/generated/stacks.d.ts +9 -0
  727. package/types/generated/stacks.web.d.ts +4 -0
  728. package/types/generated/store.d.ts +14 -0
  729. package/types/generated/styled.d.ts +20 -0
  730. package/types/generated/styled.web.d.ts +10 -0
  731. package/types/generated/svg.mobile.d.ts +23 -0
  732. package/types/generated/tap-to-blur.mobile.d.ts +16 -0
  733. package/types/generated/text-write.d.ts +9 -0
  734. package/types/generated/theme/colorScheme.d.ts +6 -0
  735. package/types/generated/theme/colorScheme.linux.d.ts +5 -0
  736. package/types/generated/theme/colorScheme.web.d.ts +5 -0
  737. package/types/generated/theme/status-bar-scheme.mobile.d.ts +1 -0
  738. package/types/generated/theme/theme-scheme.d.ts +20 -0
  739. package/types/generated/toast-anchor.d.ts +4 -0
  740. package/types/generated/toast-anchor.web.d.ts +4 -0
  741. package/types/generated/transform.web.d.ts +8 -0
  742. package/types/generated/translate.d.ts +5 -0
  743. package/types/generated/translate.web.d.ts +6 -0
  744. package/types/generated/use-back.d.ts +6 -0
  745. package/types/generated/use-back.web.d.ts +7 -0
  746. package/types/generated/use-store.d.ts +9 -0
  747. package/types/generated/use-store.web.d.ts +9 -0
  748. package/types/generated/useMeasure.d.ts +3 -0
  749. package/types/generated/useMeasure.web.d.ts +3 -0
  750. package/types/generated/vendor/ui-svg/index.common.d.ts +7 -0
  751. package/types/generated/vendor/ui-svg/index.d.ts +1 -0
  752. package/types/generated/vendor/ui-svg/index.ios.d.ts +13 -0
  753. package/types/generated/virtual-list-layout.d.ts +44 -0
  754. package/types/generated/web/index.d.ts +3 -0
  755. package/types/generated/windows.d.ts +3 -0
  756. package/types/generated/windows.linux.d.ts +15 -0
  757. package/types/generated/windows.web.d.ts +3 -0
  758. package/types/index.macos.d.ts +142 -0
  759. package/dist/native/CameraView.native.tsrx.js +0 -165
  760. package/dist/native/Meter.native.tsrx.js +0 -92
  761. package/dist/native/Pager.native.tsrx.js +0 -282
  762. package/dist/native/Video.native.tsrx.js +0 -248
  763. package/dist/native/camera-permission.native.js +0 -47
  764. package/dist/native/safeAreaInsets.native.tsrx.js +0 -35
  765. package/dist/native/video-chrome.native.tsrx.js +0 -365
  766. package/dist/web/CameraView.web.tsrx.js +0 -310
  767. package/dist/web/Pager.web.tsrx.js +0 -337
  768. package/dist/web/Video.web.tsrx.js +0 -400
  769. package/dist/web/video-chrome.web.tsrx.js +0 -207
  770. package/types/android.d.ts +0 -53
  771. package/types/index.d.ts +0 -273
  772. package/types/index.native.d.ts +0 -273
  773. package/types/index.web.d.ts +0 -272
  774. package/types/ios.d.ts +0 -59
  775. package/types/native.d.ts +0 -5
  776. package/types/web.d.ts +0 -17
@@ -0,0 +1,52 @@
1
+ // Color scheme — Linux webview leaf. The host reads the system appearance
2
+ // (org.freedesktop.portal.Settings → libadwaita fallback) before the webview
3
+ // loads and injects window.__xplatColorScheme at document-start — the
4
+ // useSyncExternalStore contract is sync, so a bridge round-trip can't supply
5
+ // the initial value. Changes arrive as xplat:appearance.change CustomEvents
6
+ // (emitted by platform's bridge emit side-channel; kept dependency-free like
7
+ // colorScheme.macos.ts's __xplatAppKit). WebKitGTK's own prefers-color-scheme
8
+ // does not follow GNOME dark style, so matchMedia is only the unbridged
9
+ // fallback.
10
+ import { useSyncExternalStore } from 'octane'
11
+
12
+ export type { ColorScheme } from '../props'
13
+ import type { ColorScheme } from '../props'
14
+
15
+ const bridged = () =>
16
+ typeof window !== 'undefined' &&
17
+ (window as any).webkit?.messageHandlers?.xplat !== undefined
18
+
19
+ let lastScheme: ColorScheme =
20
+ ((window as any).__xplatColorScheme as ColorScheme | undefined) ?? 'light'
21
+
22
+ function getSystemScheme(): ColorScheme {
23
+ return typeof matchMedia === 'function' &&
24
+ matchMedia('(prefers-color-scheme: dark)').matches
25
+ ? 'dark'
26
+ : 'light'
27
+ }
28
+
29
+ export function getColorScheme(): ColorScheme {
30
+ return bridged() ? lastScheme : getSystemScheme()
31
+ }
32
+
33
+ export function subscribeSystemScheme(cb: () => void): () => void {
34
+ if (!bridged()) {
35
+ const mq = matchMedia('(prefers-color-scheme: dark)')
36
+ mq.addEventListener('change', cb)
37
+ return () => mq.removeEventListener('change', cb)
38
+ }
39
+
40
+ const onChange = (e: Event) => {
41
+ const detail = (e as CustomEvent).detail
42
+ lastScheme = detail === 'dark' ? 'dark' : 'light'
43
+ cb()
44
+ }
45
+
46
+ window.addEventListener('xplat:appearance.change', onChange)
47
+ return () => window.removeEventListener('xplat:appearance.change', onChange)
48
+ }
49
+
50
+ export function useColorScheme(): ColorScheme {
51
+ return useSyncExternalStore(subscribeSystemScheme, getColorScheme)
52
+ }
@@ -0,0 +1,26 @@
1
+ import { useSyncExternalStore } from 'octane'
2
+ import { Application } from '@nativescript/core'
3
+
4
+ export type { ColorScheme } from '../props'
5
+ import type { ColorScheme } from '../props'
6
+
7
+ export function getColorScheme(): ColorScheme {
8
+ // systemAppearance() is deprecated in favor of primaryWindow, but the
9
+ // primary window isn't guaranteed during early boot — fall back.
10
+ return (
11
+ Application.primaryWindow?.systemAppearance?.() ??
12
+ (Application as any).systemAppearance?.() ??
13
+ 'light'
14
+ )
15
+ }
16
+
17
+ export function subscribeSystemScheme(cb: () => void): () => void {
18
+ const h = () => cb()
19
+ Application.on('systemAppearanceChanged', h)
20
+ return () => Application.off('systemAppearanceChanged', h)
21
+ }
22
+
23
+ /** Reactive system appearance — 'light' | 'dark', re-renders on OS change. */
24
+ export function useColorScheme(): ColorScheme {
25
+ return useSyncExternalStore(subscribeSystemScheme, getColorScheme)
26
+ }
@@ -0,0 +1,20 @@
1
+ import { useSyncExternalStore } from 'octane'
2
+
3
+ export type { ColorScheme } from '../props'
4
+ import type { ColorScheme } from '../props'
5
+
6
+ export function getColorScheme(): ColorScheme {
7
+ return typeof matchMedia === 'function' && matchMedia('(prefers-color-scheme: dark)').matches
8
+ ? 'dark'
9
+ : 'light'
10
+ }
11
+
12
+ export function subscribeSystemScheme(cb: () => void): () => void {
13
+ const mq = matchMedia('(prefers-color-scheme: dark)')
14
+ mq.addEventListener('change', cb)
15
+ return () => mq.removeEventListener('change', cb)
16
+ }
17
+
18
+ export function useColorScheme(): ColorScheme {
19
+ return useSyncExternalStore(subscribeSystemScheme, getColorScheme)
20
+ }
@@ -0,0 +1,39 @@
1
+ // Status-bar scheme sync — native leaf. Keeps the system bars' icon
2
+ // appearance aligned with the effective theme scheme (override-aware).
3
+ // Android: NS 9 enables edge-to-edge per activity with icon appearance
4
+ // derived from the SYSTEM uiMode — a dark-mode handler substitutes our
5
+ // scheme, consulted on every (re)application so config changes can't
6
+ // stomp an active override (covers status + nav bars). iOS: the public
7
+ // `statusBarStyle` view property routes to per-controller appearance
8
+ // invalidation, with the app-level setter as fallback.
9
+ import { Application, Utils } from '@nativescript/core'
10
+ import { getThemeScheme, onThemeSchemeChange } from './theme-scheme'
11
+
12
+ function applyStatusBarScheme(): void {
13
+ if (Application.android) {
14
+ // setDarkModeHandler stores the handler once per activity, then
15
+ // re-runs enableEdgeToEdge every call — one call installs + refreshes.
16
+ // 'light'/'dark' icon names invert: dark scheme → light icons.
17
+ // Lives on Utils.android — a bare Utils.setDarkModeHandler is
18
+ // undefined and would no-op silently.
19
+ Utils.android.setDarkModeHandler?.({ handler: () => getThemeScheme() === 'dark' })
20
+ return
21
+ }
22
+
23
+ const style = getThemeScheme() === 'dark' ? 'light' : 'dark'
24
+ const root = Application.getRootView()
25
+ if (root) {
26
+ root.statusBarStyle = style
27
+ }
28
+
29
+ if (Application.ios) {
30
+ // Pushed pages own separate view controllers the root's property
31
+ // doesn't reach — app-level setter as fallback.
32
+ ;(Application.ios.nativeApp as any)?.setStatusBarStyle?.(style === 'light' ? 1 : 0)
33
+ }
34
+ }
35
+
36
+ onThemeSchemeChange(applyStatusBarScheme)
37
+ // 'displayed' covers module init before the activity/root view exists.
38
+ Application.on('displayed', applyStatusBarScheme)
39
+ applyStatusBarScheme()
@@ -0,0 +1,50 @@
1
+ import { useSyncExternalStore } from 'octane'
2
+ import { getColorScheme, subscribeSystemScheme } from '../colorScheme.macos'
3
+ import { cx } from '../cx'
4
+
5
+ export type ThemePreference = 'light' | 'dark' | 'system'
6
+
7
+ let preference: ThemePreference = 'system'
8
+ const listeners = new Set<() => void>()
9
+ const emit = () => listeners.forEach((listener) => listener())
10
+
11
+ export function setThemePreference(value: ThemePreference): void {
12
+ if (preference === value) {return}
13
+ preference = value
14
+ emit()
15
+ }
16
+
17
+ export function getThemePreference(): ThemePreference {
18
+ return preference
19
+ }
20
+
21
+ export function getThemeScheme(): 'light' | 'dark' {
22
+ return preference === 'system' ? getColorScheme() : preference
23
+ }
24
+
25
+ function subscribe(callback: () => void): () => void {
26
+ listeners.add(callback)
27
+ const unsubscribeSystem = subscribeSystemScheme(callback)
28
+ return () => {
29
+ listeners.delete(callback)
30
+ unsubscribeSystem()
31
+ }
32
+ }
33
+
34
+ export function useThemeScheme(): 'light' | 'dark' {
35
+ return useSyncExternalStore(subscribe, getThemeScheme)
36
+ }
37
+
38
+ export function themeSchemeClasses(): string {
39
+ return getThemeScheme() === 'dark' ? 'ns-dark dark' : ''
40
+ }
41
+
42
+ export function onThemeSchemeChange(callback: () => void): () => void {
43
+ return subscribe(callback)
44
+ }
45
+
46
+ export function applyThemeClasses(view: any, base = ''): () => void {
47
+ const apply = () => { view.className = cx(base, themeSchemeClasses()) }
48
+ apply()
49
+ return onThemeSchemeChange(apply)
50
+ }
@@ -0,0 +1,66 @@
1
+ import { useSyncExternalStore } from 'octane'
2
+ import { getColorScheme, subscribeSystemScheme } from './colorScheme'
3
+ import { cx } from '../cx'
4
+
5
+ export type ThemePreference = 'light' | 'dark' | 'system'
6
+
7
+ let preference: ThemePreference = 'system'
8
+ const listeners = new Set<() => void>()
9
+ const emit = () => listeners.forEach((l) => l())
10
+
11
+ /** App-level theme override. 'system' clears the override and follows the OS. */
12
+ export function setThemePreference(p: ThemePreference) {
13
+ if (p !== preference) {
14
+ preference = p
15
+ emit()
16
+ }
17
+ }
18
+
19
+ export function getThemePreference(): ThemePreference {
20
+ return preference
21
+ }
22
+
23
+ /** The effective scheme: explicit override if set, else system appearance. */
24
+ export function getThemeScheme(): 'light' | 'dark' {
25
+ return preference === 'system' ? getColorScheme() : preference
26
+ }
27
+
28
+ function subscribe(cb: () => void): () => void {
29
+ listeners.add(cb)
30
+ const offSystem = subscribeSystemScheme(cb)
31
+ return () => {
32
+ listeners.delete(cb)
33
+ offSystem()
34
+ }
35
+ }
36
+
37
+ /** Reactive effective scheme — re-renders on override or OS change. */
38
+ export function useThemeScheme(): 'light' | 'dark' {
39
+ return useSyncExternalStore(subscribe, getThemeScheme)
40
+ }
41
+
42
+ /** Class string to stamp on independently-mounted roots (portal hosts,
43
+ * overlay/sheet/modal/toast containers): 'ns-dark dark' when effective
44
+ * dark, '' otherwise. Both names because tokens.css publishes both
45
+ * selectors and hosts may render either vocabulary. */
46
+ export function themeSchemeClasses(): string {
47
+ return getThemeScheme() === 'dark' ? 'ns-dark dark' : ''
48
+ }
49
+
50
+ /** Subscribe imperative hosts to effective-scheme changes; returns an
51
+ * unsubscribe. Use for hosts that live outside any render cycle. */
52
+ export function onThemeSchemeChange(cb: () => void): () => void {
53
+ return subscribe(cb)
54
+ }
55
+
56
+ /** Stamp `base + themeSchemeClasses()` onto an imperative host (NS view or
57
+ * DOM element) and keep it live — returns an unsubscribe to call when the
58
+ * host closes. Works on both leaves since both honor `.className`. */
59
+ export function applyThemeClasses(view: any, base: string): () => void {
60
+ const apply = () => {
61
+ view.className = cx(base, themeSchemeClasses())
62
+ }
63
+
64
+ apply()
65
+ return onThemeSchemeChange(apply)
66
+ }
@@ -370,21 +370,6 @@ img {
370
370
 
371
371
  /* xplat-web-only:end */
372
372
 
373
- /* CameraView — surface-hosted: the preview fills the frame; web shows it
374
- through an object-fit:cover <video>. */
375
- .vx-cameraview {
376
- background-color: #000;
377
- }
378
-
379
- /* xplat-web-only:start */
380
- .vx-cameraview-surface {
381
- display: block;
382
- width: 100%;
383
- height: 100%;
384
- object-fit: cover;
385
- }
386
- /* xplat-web-only:end */
387
-
388
373
  /* xplat-web-only:start */
389
374
  /* Modal ROUTES (pushRoute presentation:'modal') — the URL stays underneath,
390
375
  so the overlay is a fixed layer over the shell rather than a dialog. */
@@ -937,6 +922,32 @@ input.vx-search-field::-webkit-search-cancel-button {
937
922
  margin-bottom: 8px;
938
923
  }
939
924
 
925
+ /* ListItem — a reusable shared row; callers own the surrounding list chrome. */
926
+ .vx-listitem {
927
+ flex-direction: row;
928
+ align-items: center;
929
+ width: 100%;
930
+ padding: 10px 12px;
931
+ gap: 12px;
932
+ }
933
+ .vx-listitem-leading,
934
+ .vx-listitem-trailing {
935
+ flex-shrink: 0;
936
+ align-items: center;
937
+ }
938
+ .vx-listitem-content {
939
+ flex-direction: column;
940
+ flex-grow: 1;
941
+ }
942
+ .vx-listitem-title {
943
+ font-weight: 500;
944
+ }
945
+ .vx-listitem-supporting {
946
+ font-size: 12px;
947
+ line-height: 16px;
948
+ color: var(--color-text-secondary);
949
+ }
950
+
940
951
  /* InputNumber — steppers flanking a centered field. */
941
952
  .vx-inputnumber {
942
953
  flex-direction: row;
@@ -1054,6 +1065,10 @@ input.vx-search-field::-webkit-search-cancel-button {
1054
1065
  /* xplat-web-only:start — display:flex for the div/span flex classes */
1055
1066
  .vx-field,
1056
1067
  .vx-fieldgroup,
1068
+ .vx-listitem,
1069
+ .vx-listitem-leading,
1070
+ .vx-listitem-content,
1071
+ .vx-listitem-trailing,
1057
1072
  .vx-inputnumber,
1058
1073
  .vx-inputnumber-step,
1059
1074
  .vx-select-trigger,
@@ -1197,7 +1212,10 @@ input.vx-search-field::-webkit-search-cancel-button {
1197
1212
  /* CommandPalette — panel centered by the overlay layer. */
1198
1213
  .vx-commandpalette {
1199
1214
  width: 360px;
1200
- max-width: 90%;
1215
+ /* vw, not %: the overlay-content wrapper shrink-wraps the palette, so a
1216
+ * plain % would resolve against the palette's own width (clamping an
1217
+ * explicit style.width to 90% of itself). */
1218
+ max-width: 90vw;
1201
1219
  padding: 8px;
1202
1220
  border-width: 1px;
1203
1221
  border-color: var(--color-border);
@@ -1508,28 +1526,32 @@ input.vx-search-field::-webkit-search-cancel-button {
1508
1526
  }
1509
1527
  /* xplat-web-only:end */
1510
1528
 
1529
+ .vx-heading {
1530
+ margin: 0;
1531
+ }
1532
+ /* NativeScript reads the numeric prefix of font-size; keep this scale in px. */
1511
1533
  .vx-h1 {
1512
- font-size: 2em;
1534
+ font-size: 32px;
1513
1535
  font-weight: bold;
1514
1536
  }
1515
1537
  .vx-h2 {
1516
- font-size: 1.5em;
1538
+ font-size: 24px;
1517
1539
  font-weight: bold;
1518
1540
  }
1519
1541
  .vx-h3 {
1520
- font-size: 1.17em;
1542
+ font-size: 18.72px;
1521
1543
  font-weight: bold;
1522
1544
  }
1523
1545
  .vx-h4 {
1524
- font-size: 1em;
1546
+ font-size: 16px;
1525
1547
  font-weight: bold;
1526
1548
  }
1527
1549
  .vx-h5 {
1528
- font-size: 0.83em;
1550
+ font-size: 13.28px;
1529
1551
  font-weight: bold;
1530
1552
  }
1531
1553
  .vx-h6 {
1532
- font-size: 0.67em;
1554
+ font-size: 10.72px;
1533
1555
  font-weight: bold;
1534
1556
  }
1535
1557
 
@@ -0,0 +1,3 @@
1
+ export function showToast(_content: unknown, _options?: unknown): void {
2
+ console.warn('[octane-xplat] Toast display is unsupported by the experimental AppKit target.')
3
+ }
@@ -0,0 +1,122 @@
1
+ /** @jsxImportSource @nativescript-community/octane */
2
+ import { GridLayout, isAndroid, isIOS } from '@nativescript/core';
3
+ import { createNativeScriptRoot } from '@nativescript-community/octane';
4
+ import type { UniversalComponent } from 'octane/universal';
5
+ import { Popover } from './Popover.tsrx';
6
+ import { topRootLayout } from './root-layout.mobile';
7
+ import { applyThemeClasses } from './theme/theme-scheme';
8
+ import type { ToastContent, ToastOptions, ToastPosition } from './props';
9
+
10
+ type ToastEntry = { content: ToastContent; options: ToastOptions };
11
+ type ActiveToast = ToastEntry & { host: GridLayout; root: any; timer: ReturnType<typeof setTimeout> | null; unbindTheme?: () => void };
12
+ const queue: ToastEntry[] = [];
13
+ let active: ActiveToast | null = null;
14
+
15
+ function placementFor(position: ToastPosition = 'bottom'): 'top' | 'bottom' {
16
+ return position.startsWith('top') ? 'top' : 'bottom';
17
+ }
18
+
19
+ function horizontalFor(position: ToastPosition = 'bottom'): 'left' | 'center' | 'right' {
20
+ if (position.endsWith('-start')) return 'left';
21
+ if (position.endsWith('-end')) return 'right';
22
+ return 'center';
23
+ }
24
+
25
+ function ToastBody(props: ToastEntry & { open: boolean }) @{
26
+ @if (props.options.anchor) {
27
+ <Popover
28
+ open={props.open}
29
+ anchor={props.options.anchor}
30
+ placement={props.options.placement ?? placementFor(props.options.position)}
31
+ dismissOnOutsideTap={false}
32
+ >
33
+ <gridlayout className="vx-toast">
34
+ @if (typeof props.content === 'string') {
35
+ <label>{props.content}</label>
36
+ } @else {
37
+ const Component = props.content;
38
+ <Component />
39
+ }
40
+ </gridlayout>
41
+ </Popover>
42
+ } @else {
43
+ @if (typeof props.content === 'string') {
44
+ <label className="vx-toast">{props.content}</label>
45
+ } @else {
46
+ const Component = props.content;
47
+ <gridlayout className="vx-toast"><Component /></gridlayout>
48
+ }
49
+ }
50
+ }
51
+
52
+ function finishToast(entry: ActiveToast) {
53
+ if (active !== entry) return;
54
+ if (entry.timer !== null) clearTimeout(entry.timer);
55
+ entry.timer = null;
56
+ const cleanup = () => {
57
+ entry.unbindTheme?.();
58
+ entry.root.unmount?.();
59
+ if (active === entry) active = null;
60
+ showNext();
61
+ };
62
+
63
+ if (entry.options.anchor) {
64
+ entry.root.render(ToastBody as unknown as UniversalComponent, { ...entry, open: false });
65
+ setTimeout(cleanup, 0);
66
+ return;
67
+ }
68
+
69
+ const rootLayout = topRootLayout();
70
+ if (rootLayout && (rootLayout as any).hasChild?.(entry.host)) {
71
+ rootLayout.close(entry.host).then(cleanup, (error: unknown) => {
72
+ console.error('[Toast] close failed', error);
73
+ cleanup();
74
+ });
75
+ } else cleanup();
76
+ }
77
+
78
+ function showNext() {
79
+ if (active || queue.length === 0) return;
80
+ const entry = queue.shift()!;
81
+ const anchored = Boolean(entry.options.anchor);
82
+ const rootLayout = topRootLayout();
83
+ if (!anchored && !rootLayout) {
84
+ console.warn('[Toast] RootLayout is not mounted; toast was skipped');
85
+ showNext();
86
+ return;
87
+ }
88
+
89
+ const host = new GridLayout();
90
+ const position = entry.options.position ?? 'bottom';
91
+ const unbindTheme = applyThemeClasses(host, 'vx-toast-host');
92
+ const root = createNativeScriptRoot(host);
93
+ const current: ActiveToast = { ...entry, host, root, timer: null, unbindTheme };
94
+ active = current;
95
+ root.render(ToastBody as unknown as UniversalComponent, { ...entry, open: true });
96
+
97
+ if (anchored) {
98
+ current.timer = setTimeout(() => finishToast(current), Math.max(0, entry.options.duration ?? 3000));
99
+ return;
100
+ }
101
+
102
+ host.horizontalAlignment = horizontalFor(position);
103
+ host.verticalAlignment = placementFor(position) === 'top' ? 'top' : 'bottom';
104
+ host.marginTop = placementFor(position) === 'top' ? 24 : 0;
105
+ host.marginBottom = placementFor(position) === 'top' ? 0 : 24;
106
+ Object.assign(host, isIOS ? entry.options.ios : isAndroid ? entry.options.android : undefined);
107
+ rootLayout!.open(host).then(() => {
108
+ if (active === current) current.timer = setTimeout(() => finishToast(current), Math.max(0, entry.options.duration ?? 3000));
109
+ }, (error: unknown) => {
110
+ console.error('[Toast] open failed', error);
111
+ root.unmount?.();
112
+ if (active === current) active = null;
113
+ showNext();
114
+ });
115
+ }
116
+
117
+ /** FIFO queue. Anchored options use Popover; unanchored options use the
118
+ * RootLayout with top/bottom start/end alignment. */
119
+ export function showToast(content: ToastContent, options: ToastOptions = {}): void {
120
+ queue.push({ content, options });
121
+ showNext();
122
+ }
@@ -0,0 +1,92 @@
1
+ import { createRoot } from 'octane';
2
+ import { Popover } from './Popover.web.tsrx';
3
+ import type { ToastContent, ToastOptions, ToastPosition } from './props';
4
+ import { cx } from './cx';
5
+ import { applyThemeClasses } from './theme/theme-scheme';
6
+
7
+ type ToastEntry = { content: ToastContent; options: ToastOptions };
8
+ const queue: ToastEntry[] = [];
9
+ let active = false;
10
+
11
+ function ToastBody(props: ToastEntry & { open: boolean }) @{
12
+ @if (props.options.anchor) {
13
+ <Popover
14
+ open={props.open}
15
+ anchor={props.options.anchor}
16
+ placement={props.options.placement ?? placementFor(props.options.position)}
17
+ dismissOnOutsideTap={false}
18
+ >
19
+ @if (typeof props.content === 'string') {
20
+ <div className="vx-toast">{props.content}</div>
21
+ } @else {
22
+ const Component = props.content;
23
+ <div className="vx-toast"><Component /></div>
24
+ }
25
+ </Popover>
26
+ } @else {
27
+ @if (typeof props.content === 'string') {
28
+ <div className="vx-toast">{props.content}</div>
29
+ } @else {
30
+ const Component = props.content;
31
+ <div className="vx-toast"><Component /></div>
32
+ }
33
+ }
34
+ }
35
+
36
+ function placementFor(position: ToastPosition = 'bottom'): 'top' | 'bottom' {
37
+ return position.startsWith('top') ? 'top' : 'bottom';
38
+ }
39
+
40
+ function applyWebProps(host: HTMLElement, props?: Record<string, any>) {
41
+ for (const [key, value] of Object.entries(props ?? {})) {
42
+ if (key.includes('-')) host.setAttribute(key, String(value));
43
+ else (host as any)[key] = value;
44
+ }
45
+ }
46
+
47
+ function alignmentFor(position: ToastPosition = 'bottom') {
48
+ if (position.endsWith('-start')) return 'flex-start';
49
+ if (position.endsWith('-end')) return 'flex-end';
50
+ return 'center';
51
+ }
52
+
53
+ function showNext() {
54
+ if (active || queue.length === 0) return;
55
+ active = true;
56
+ const entry = queue.shift()!;
57
+ const anchored = Boolean(entry.options.anchor);
58
+ const host = document.createElement('div');
59
+ const position = entry.options.position ?? 'bottom';
60
+ const unbindTheme = applyThemeClasses(host, cx('vx-toast-host', placementFor(position) === 'top' ? 'vx-toast-top' : 'vx-toast-bottom'));
61
+ applyWebProps(host, entry.options.web);
62
+ if (anchored) host.style.display = 'none';
63
+ else host.style.justifyContent = alignmentFor(position);
64
+
65
+ document.body.appendChild(host);
66
+ const root = createRoot(host);
67
+ root.render(ToastBody, { ...entry, open: true });
68
+
69
+ const finish = () => {
70
+ const cleanup = () => {
71
+ unbindTheme();
72
+ root.unmount();
73
+ host.remove();
74
+ active = false;
75
+ showNext();
76
+ };
77
+
78
+ if (anchored) {
79
+ root.render(ToastBody, { ...entry, open: false });
80
+ setTimeout(cleanup, 0);
81
+ } else cleanup();
82
+ };
83
+
84
+ setTimeout(finish, Math.max(0, entry.options.duration ?? 3000));
85
+ }
86
+
87
+ /** FIFO queue. `anchor` uses the same portal positioning as Popover; without
88
+ * one, top/bottom and their start/end alignment variants use the viewport. */
89
+ export function showToast(content: ToastContent, options: ToastOptions = {}): void {
90
+ queue.push({ content, options });
91
+ showNext();
92
+ }
package/src/toast.tsrx ADDED
@@ -0,0 +1,90 @@
1
+ /** @jsxImportSource @nativescript-community/octane */
2
+ import { GridLayout, isAndroid, isIOS } from '@nativescript/core';
3
+ import { topRootLayout } from './root-layout.mobile';
4
+ import { applyThemeClasses } from './theme/theme-scheme';
5
+ import { createNativeScriptRoot } from '@nativescript-community/octane';
6
+ import type { UniversalComponent } from 'octane/universal';
7
+ import type { ToastContent, ToastOptions } from './props';
8
+ import { cx } from './cx';
9
+
10
+
11
+ type ToastEntry = { content: ToastContent; options: ToastOptions };
12
+ type ActiveToast = ToastEntry & { host: GridLayout; root: any; timer: ReturnType<typeof setTimeout> | null; unbindTheme?: () => void };
13
+
14
+ const queue: ToastEntry[] = [];
15
+ let active: ActiveToast | null = null;
16
+
17
+ function ToastBody(props: { content: ToastContent }) @{
18
+ @if (typeof props.content === 'string') {
19
+ <label className="vx-toast">{props.content}</label>
20
+ } @else {
21
+ const Component = props.content;
22
+ <gridlayout className="vx-toast"><Component /></gridlayout>
23
+ }
24
+ }
25
+
26
+ function finishToast(entry: ActiveToast) {
27
+ if (active !== entry) return;
28
+ if (entry.timer !== null) clearTimeout(entry.timer);
29
+ entry.timer = null;
30
+ const rootLayout = topRootLayout();
31
+ const finish = () => {
32
+ entry.unbindTheme?.();
33
+ entry.root.unmount?.();
34
+ if (active === entry) active = null;
35
+ showNext();
36
+ };
37
+
38
+ if (rootLayout && (rootLayout as any)?.hasChild?.(entry.host)) {
39
+ rootLayout.close(entry.host).then(finish, (error) => {
40
+ console.error('[Toast] close failed', error);
41
+ finish();
42
+ });
43
+ } else finish();
44
+ }
45
+
46
+ function showNext() {
47
+ if (active || queue.length === 0) return;
48
+ const entry = queue.shift()!;
49
+ const rootLayout = topRootLayout();
50
+ if (!rootLayout) {
51
+ console.warn('[Toast] RootLayout is not mounted; toast was skipped');
52
+ return;
53
+ }
54
+
55
+ const host = new GridLayout();
56
+ const unbindTheme = applyThemeClasses(host, 'vx-toast-host');
57
+ host.horizontalAlignment = 'stretch';
58
+ host.verticalAlignment = entry.options.position === 'top' ? 'top' : 'bottom';
59
+ host.marginTop = entry.options.position === 'top' ? 24 : 0;
60
+ host.marginBottom = entry.options.position === 'top' ? 0 : 24;
61
+ Object.assign(host, isIOS ? entry.options.ios : isAndroid ? entry.options.android : undefined);
62
+ const root = createNativeScriptRoot(host);
63
+ const current: ActiveToast = { ...entry, host, root, timer: null, unbindTheme };
64
+ active = current;
65
+ root.render(ToastBody as unknown as UniversalComponent, { content: entry.content });
66
+ const open = () => {
67
+ rootLayout.open(host).then(() => {
68
+ if (active === current) current.timer = setTimeout(() => finishToast(current), Math.max(0, entry.options.duration ?? 3000));
69
+ }, (error) => {
70
+ console.error('[Toast] open failed', error);
71
+ root.unmount?.();
72
+ if (active === current) active = null;
73
+ showNext();
74
+ });
75
+ };
76
+
77
+ if ((rootLayout as any).hasChild?.(host)) {
78
+ rootLayout.close(host).then(open, (error) => {
79
+ console.error('[Toast] stale host close failed', error);
80
+ if (active === current) active = null;
81
+ showNext();
82
+ });
83
+ } else open();
84
+ }
85
+
86
+ /** FIFO queue; each toast is shown after the prior toast closes. */
87
+ export function showToast(content: ToastContent, options: ToastOptions = {}): void {
88
+ queue.push({ content, options });
89
+ showNext();
90
+ }