@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
package/src/props.ts ADDED
@@ -0,0 +1,1812 @@
1
+ /** Shared prop/type contract — the single source of truth for the public
2
+ * API surface. Platform leaves import these types so prop shapes cannot
3
+ * drift across .web/native-default, and `tsrx-typegen` emits the package's
4
+ * declarations from its public entrypoints and component leaves. No imports
5
+ * here: the shared contracts stay dependency-free and platform-agnostic. */
6
+
7
+ // ---------- gestures ----------
8
+
9
+ export interface PanEvent {
10
+ x: number
11
+ y: number
12
+ dx: number
13
+ dy: number
14
+ vx: number
15
+ vy: number
16
+ state: string
17
+ target: any
18
+ }
19
+
20
+ export interface SwipeEvent {
21
+ direction: number
22
+ }
23
+
24
+ /** Public shape of `setTranslate` — the imperative translate write on a
25
+ * bound view (a leaf's `bind` target). Web composes into the element's
26
+ * `transform`; native sets the view's translateX/translateY props.
27
+ * Both axes default to 0, so `setTranslate(el)` resets. */
28
+ export type SetTranslate = (el: any, x?: number, y?: number) => void
29
+
30
+ // ---------- primitives ----------
31
+
32
+ /** Metadata read by parent layouts. Native forwards NativeScript attached
33
+ * attributes; web folds the CSS equivalents into the child's style. */
34
+ export interface LayoutChildProps {
35
+ row?: number
36
+ col?: number
37
+ rowSpan?: number
38
+ colSpan?: number
39
+ dock?: 'left' | 'top' | 'right' | 'bottom'
40
+ left?: number
41
+ top?: number
42
+ flexGrow?: number
43
+ flexShrink?: number
44
+ alignSelf?: string
45
+ order?: number
46
+ }
47
+
48
+ /** JSON-compatible modifier data accepted by the platform-authentic widgets. */
49
+ export type NativeModifierValue =
50
+ | string
51
+ | number
52
+ | boolean
53
+ | null
54
+ | readonly NativeModifierValue[]
55
+ | { readonly [key: string]: NativeModifierValue }
56
+
57
+ /** A serializable change to a NativeScript view's style or native property.
58
+ * Platform-specific UI subpaths apply modifier arrays after shared props and
59
+ * the matching `ios`/`android` escape bag. */
60
+ export type NativeModifier =
61
+ | { type: 'style'; values: Record<string, NativeModifierValue | undefined> }
62
+ | { type: 'property'; name: string; value: NativeModifierValue }
63
+
64
+ /** Adds the native-only modifier escape hatch to an OS-backed widget's props. */
65
+ export type PlatformWidgetProps<Props> = Props & {
66
+ modifiers?: readonly NativeModifier[]
67
+ }
68
+
69
+ /** Native glyph names for the OS-authentic UI subpaths. */
70
+ export interface PlatformIconChoice {
71
+ ios: string
72
+ android: string
73
+ }
74
+
75
+ /** Flex-container props shared by View/Row/Pressable — RN vocabulary, applied
76
+ * to the host flexboxlayout natively and the element's style on web.
77
+ * `gap` is a dip number (px on web); NS supports it on FlexboxLayout only
78
+ * (GridLayout has no gap). */
79
+ export interface FlexContainerProps {
80
+ justifyContent?: 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly'
81
+ alignItems?: 'start' | 'center' | 'end' | 'stretch' | 'baseline'
82
+ flexWrap?: boolean | 'wrap' | 'nowrap' | 'wrap-reverse'
83
+ gap?: number | string
84
+ rowGap?: number | string
85
+ columnGap?: number | string
86
+ }
87
+
88
+ /** Liquid Glass material config. Native maps it to `iosGlassEffect`
89
+ * (iOS 26+; inert on Android and older iOS), web to the `vx-glass`
90
+ * backdrop-filter approximation. `variant:'clear'` is the faint,
91
+ * mostly-transparent glass; `'regular'` is Apple's default. */
92
+ export interface GlassConfig {
93
+ variant?: 'regular' | 'clear' | 'identity' | 'none'
94
+ /** Touch-tracking highlight — only meaningful on <LiquidGlass>; the
95
+ * per-view glass applied by `glass` never receives touches upstream. */
96
+ interactive?: boolean
97
+ tint?: string
98
+ /** (LiquidGlassContainer only) merge distance between glass siblings. */
99
+ spacing?: number
100
+ /** Effect-change animation in ms (default 300). */
101
+ animateChangeDuration?: number
102
+ }
103
+
104
+ export interface GridProps extends AccessibilityProps {
105
+ className?: any
106
+ style?: any
107
+ children?: any
108
+ rows?: string
109
+ columns?: string
110
+ ios?: Record<string, any>
111
+ android?: Record<string, any>
112
+ web?: Record<string, any>
113
+ id?: string
114
+ }
115
+
116
+ export interface StackProps extends AccessibilityProps {
117
+ className?: any
118
+ style?: any
119
+ children?: any
120
+ ios?: Record<string, any>
121
+ android?: Record<string, any>
122
+ web?: Record<string, any>
123
+ id?: string
124
+ }
125
+
126
+ export interface AbsoluteProps extends AccessibilityProps {
127
+ className?: any
128
+ style?: any
129
+ children?: any
130
+ ios?: Record<string, any>
131
+ android?: Record<string, any>
132
+ web?: Record<string, any>
133
+ id?: string
134
+ }
135
+
136
+ /** Interactive glass surface — the element root IS the platform's glass
137
+ * effect view (NS `LiquidGlass`, a UIVisualEffectView hosting children).
138
+ * Real material on iOS 26+; inert layout on Android and older iOS;
139
+ * backdrop-filter approximation on web. */
140
+ export interface LiquidGlassProps extends LayoutChildProps {
141
+ className?: any
142
+ style?: any
143
+ children?: any
144
+ id?: string
145
+ variant?: 'regular' | 'clear'
146
+ interactive?: boolean
147
+ tint?: string
148
+ animateChangeDuration?: number
149
+ ios?: Record<string, any>
150
+ android?: Record<string, any>
151
+ web?: Record<string, any>
152
+ }
153
+
154
+ /** Merged-glass region — sibling glass elements inside morph together
155
+ * across `spacing` dips (NS `LiquidGlassContainer`, an AbsoluteLayout:
156
+ * children position via left/top). */
157
+ export interface LiquidGlassContainerProps extends LayoutChildProps {
158
+ className?: any
159
+ style?: any
160
+ children?: any
161
+ id?: string
162
+ spacing?: number
163
+ ios?: Record<string, any>
164
+ android?: Record<string, any>
165
+ web?: Record<string, any>
166
+ }
167
+
168
+ export interface SpacerProps {
169
+ className?: any
170
+ style?: any
171
+ ios?: Record<string, any>
172
+ android?: Record<string, any>
173
+ web?: Record<string, any>
174
+ id?: string
175
+ }
176
+
177
+ /** The shared accessibility prop set — `Role` and friends are declared
178
+ * below; containers and leaf components carry the same names so ARIA on
179
+ * web and NativeScript's accessibility properties stay aligned. */
180
+ export interface AccessibilityProps {
181
+ accessible?: boolean
182
+ accessibilityLabel?: string
183
+ accessibilityRole?: Role
184
+ accessibilityHint?: string
185
+ accessibilityValue?: string
186
+ accessibilityState?: {
187
+ disabled?: boolean
188
+ selected?: boolean
189
+ checked?: boolean
190
+ }
191
+ accessibilityLiveRegion?: 'none' | 'polite' | 'assertive'
192
+ }
193
+
194
+ export interface ViewProps extends LayoutChildProps, FlexContainerProps, AccessibilityProps {
195
+ className?: any
196
+ style?: any
197
+ children?: any
198
+ id?: string
199
+ /** `ref` is runtime-reserved on component elements — leaves expose
200
+ * `bind` to reach the native/DOM node. */
201
+ bind?: (el: any) => void
202
+ onPan?: (e: PanEvent) => void
203
+ onSwipe?: (e: SwipeEvent) => void
204
+ /** Platform-specific properties are applied after shared props. */
205
+ ios?: any
206
+ android?: any
207
+ web?: any
208
+ }
209
+
210
+ export interface RowProps extends LayoutChildProps, FlexContainerProps, AccessibilityProps {
211
+ className?: any
212
+ style?: any
213
+ children?: any
214
+ id?: string
215
+ /** `ref` is runtime-reserved on component elements — leaves expose
216
+ * `bind` to reach the native/DOM node. */
217
+ bind?: (el: any) => void
218
+ onPan?: (e: PanEvent) => void
219
+ onSwipe?: (e: SwipeEvent) => void
220
+ /** Platform-specific properties are applied after shared props. */
221
+ ios?: any
222
+ android?: any
223
+ web?: any
224
+ }
225
+
226
+ /** Shared accessibility roles. The native leaf maps the ARIA spellings that
227
+ * NativeScript names differently (for example `heading` → `header`). */
228
+ export type Role =
229
+ | 'button'
230
+ | 'link'
231
+ | 'search'
232
+ | 'image'
233
+ | 'heading'
234
+ | 'adjustable'
235
+ | 'summary'
236
+ | 'text'
237
+ | 'none'
238
+ | 'progressbar'
239
+ | 'checkbox'
240
+ | 'switch'
241
+ | 'radio'
242
+ | 'spinbutton'
243
+ | 'tab'
244
+
245
+ export interface TextProps extends LayoutChildProps {
246
+ className?: any
247
+ style?: any
248
+ children?: any
249
+ id?: string
250
+ numberOfLines?: number
251
+ ellipsize?: boolean
252
+ accessible?: boolean
253
+ accessibilityLabel?: string
254
+ accessibilityRole?: Role
255
+ accessibilityHint?: string
256
+ accessibilityValue?: string
257
+ accessibilityState?: {
258
+ disabled?: boolean
259
+ selected?: boolean
260
+ checked?: boolean
261
+ }
262
+ accessibilityLiveRegion?: 'none' | 'polite' | 'assertive'
263
+ /** Platform-specific properties are applied after shared props. */
264
+ ios?: any
265
+ android?: any
266
+ web?: any
267
+ }
268
+
269
+ /** Inline rich text container. Children should be RichTextSpan components so
270
+ * the native leaf can preserve each run as a NativeScript Span. */
271
+ export interface RichTextProps extends LayoutChildProps {
272
+ className?: any
273
+ style?: any
274
+ children?: any
275
+ id?: string
276
+ /** Platform-specific properties are applied after shared props. */
277
+ ios?: any
278
+ android?: any
279
+ web?: any
280
+ }
281
+
282
+ /** One styled or tappable inline run inside RichText. `text` is an explicit
283
+ * native-safe escape hatch; a single string child is also accepted. */
284
+ export interface RichTextSpanProps {
285
+ className?: any
286
+ style?: any
287
+ children?: any
288
+ text?: string
289
+ onPress?: () => void
290
+ /** Platform-specific properties are applied after shared props. */
291
+ ios?: any
292
+ android?: any
293
+ web?: any
294
+ }
295
+
296
+ export interface PressableProps extends LayoutChildProps, FlexContainerProps {
297
+ className?: any
298
+ style?: any
299
+ children?: any
300
+ id?: string
301
+ disabled?: boolean
302
+ /** `ref` is runtime-reserved on component elements — leaves expose
303
+ * `bind` to reach the native/DOM node. */
304
+ bind?: (el: any) => void
305
+ onPan?: (e: PanEvent) => void
306
+ onSwipe?: (e: SwipeEvent) => void
307
+ onPress?: () => void
308
+ /** ~500ms press-and-hold (web: timer over pointerdown/up). */
309
+ onLongPress?: () => void
310
+ accessible?: boolean
311
+ accessibilityLabel?: string
312
+ accessibilityRole?: Role
313
+ onPressIn?: () => void
314
+ onPressOut?: () => void
315
+ onDoublePress?: () => void
316
+ hitSlop?: number
317
+ accessibilityHint?: string
318
+ accessibilityValue?: string
319
+ accessibilityState?: {
320
+ disabled?: boolean
321
+ selected?: boolean
322
+ checked?: boolean
323
+ }
324
+ accessibilityLiveRegion?: 'none' | 'polite' | 'assertive'
325
+ /** Platform-specific properties are applied after shared props. */
326
+ ios?: any
327
+ android?: any
328
+ web?: any
329
+ }
330
+
331
+ export interface TextInputHandle {
332
+ focus(): void
333
+ blur(): void
334
+ native: any
335
+ }
336
+
337
+ export interface TextInputProps {
338
+ className?: any
339
+ style?: any
340
+ id?: string
341
+ value?: string
342
+ placeholder?: string
343
+ onChange?: (value: string) => void
344
+ bind?: (h: TextInputHandle) => void
345
+ secure?: boolean
346
+ keyboardType?: 'default' | 'email' | 'number' | 'decimal' | 'phone' | 'url'
347
+ returnKeyType?: 'done' | 'next' | 'go' | 'search' | 'send'
348
+ onSubmit?: () => void
349
+ onFocus?: () => void
350
+ onBlur?: () => void
351
+ editable?: boolean
352
+ placeholderTextColor?: string
353
+ /** Platform-specific properties are applied after shared props. */
354
+ ios?: any
355
+ android?: any
356
+ web?: any
357
+ }
358
+
359
+ export interface TextAreaProps extends TextInputProps {
360
+ /** Submit on native only when `returnKeyType` is `done` or `send`; other
361
+ * returns insert newlines because TextView emits returnPress per newline.
362
+ * Web submits on Cmd/Ctrl+Enter. */
363
+ /** Height in text rows. Web: the `rows` attr (fixed box); native:
364
+ * minHeight at the widget's measured line height. With `autoGrow` it
365
+ * becomes the starting height instead of a fixed one. */
366
+ rows?: number
367
+ /** Grow to fit content, capped by `maxRows`. Native TextView grows by
368
+ * default — this prop exists so web (<textarea> is fixed-rows) matches;
369
+ * without it, native gets a fixed `rows`-high box like web. */
370
+ autoGrow?: boolean
371
+ /** Growth cap in rows — past it the field scrolls internally. Native:
372
+ * maxHeight at measured line height (TextView's own `maxLines` only
373
+ * sets truncation on iOS — not a cap). */
374
+ maxRows?: number
375
+ }
376
+
377
+ /** Chrome-reset search field — TextInput with a leading glyph and a clear
378
+ * affordance, normalized: the web leaf is `<input type="search">` with the
379
+ * engine's own clear button hidden (the leaf draws the same one native
380
+ * gets), the native leaf is a styled TextField with `returnKeyType`
381
+ * `'search'`. Not UISearchBar — OS search chrome is deliberately absent. */
382
+ export interface SearchInputProps {
383
+ className?: any
384
+ style?: any
385
+ id?: string
386
+ /** Controlled text — pair with `onChange`. */
387
+ value?: string
388
+ /** Initial text for uncontrolled use. */
389
+ defaultValue?: string
390
+ onChange?: (value: string) => void
391
+ /** Enter on web, the keyboard's `search` return key on native. */
392
+ onSubmit?: () => void
393
+ /** The clear button tapped — fires after `onChange('')`. */
394
+ onClear?: () => void
395
+ onFocus?: () => void
396
+ onBlur?: () => void
397
+ placeholder?: string
398
+ editable?: boolean
399
+ /** Leading glyph — a registered icon name. Defaults to the built-in
400
+ * `'xplat-search'` glyph; `false` renders no glyph. */
401
+ icon?: string | false
402
+ bind?: (h: TextInputHandle) => void
403
+ accessibilityLabel?: string
404
+ /** Platform-specific properties are applied after shared props. */
405
+ ios?: any
406
+ android?: any
407
+ web?: any
408
+ }
409
+
410
+ /** Pull-to-refresh contract — shared by `ScrollView` and the platform
411
+ * lists (`UITableView`/`RecyclerView`). The indicator is self-drawn (the
412
+ * `vx-spinner` ring), not the OS spinner, so the affordance is the same
413
+ * pixels on every target. The pull gesture is enabled by `onRefresh`;
414
+ * `refreshing` is controlled — set it true while reloading to keep the
415
+ * indicator docked, false to collapse it. */
416
+ export interface RefreshProps {
417
+ /** True while a refresh is in flight — docks the indicator strip above
418
+ * the content. Read-only after the initial pull: the app owns it. */
419
+ refreshing?: boolean
420
+ /** Enables the pull gesture; fires when the user pulls past
421
+ * `refreshThreshold` and releases. */
422
+ onRefresh?: () => void
423
+ /** Pull distance past the top edge (px on web, dip on native) whose
424
+ * release fires `onRefresh`. Defaults to the indicator strip height
425
+ * (64). */
426
+ refreshThreshold?: number
427
+ }
428
+
429
+ export interface ListProps extends RefreshProps {
430
+ className?: any
431
+ style?: any
432
+ id?: string
433
+ items: any[]
434
+ renderItem: (item: any, index: number) => any
435
+ renderEmpty?: () => any
436
+ /** iOS row-height estimate (UITableView only). */
437
+ estimatedItemHeight?: number
438
+ /** Called when the list approaches its end. */
439
+ onEndReached?: () => void
440
+ /** Platform escape hatches, applied after the shared props. */
441
+ ios?: Record<string, any>
442
+ android?: Record<string, any>
443
+ web?: Record<string, any>
444
+ }
445
+
446
+ export interface ScrollViewProps extends LayoutChildProps, AccessibilityProps, RefreshProps {
447
+ className?: any
448
+ style?: any
449
+ id?: string
450
+ horizontal?: boolean
451
+ children?: any
452
+ /** Platform-specific properties are applied after shared props. */
453
+ ios?: any
454
+ android?: any
455
+ web?: any
456
+ }
457
+
458
+ /** Shared virtualized vertical list. Item keys must be unique and stable
459
+ * across inserts and reorders. Rows outside the rendered window unmount;
460
+ * keep durable row state keyed by item identity outside the row component. */
461
+ export interface VirtualListProps<T = any> extends LayoutChildProps, AccessibilityProps {
462
+ className?: any
463
+ style?: any
464
+ id?: string
465
+ items: readonly T[]
466
+ keyExtractor: (item: T, index: number) => string | number
467
+ getItemType?: (item: T, index: number) => string | number
468
+ renderItem: (item: T, index: number) => any
469
+ renderEmpty?: () => any
470
+ renderHeader?: () => any
471
+ renderFooter?: () => any
472
+ renderSeparator?: () => any
473
+ /** Platform-specific properties are applied after shared props. */
474
+ ios?: Record<string, any>
475
+ android?: Record<string, any>
476
+ web?: Record<string, any>
477
+ }
478
+
479
+ /** Scrollable ordinary content on web. Native is an inline flex container so
480
+ * a child ListView can own the scrolling without nesting recycling views in a
481
+ * native ScrollView. */
482
+ export interface ScrollBoxProps extends LayoutChildProps, AccessibilityProps {
483
+ className?: any
484
+ style?: any
485
+ id?: string
486
+ children?: any
487
+ /** Platform-specific properties are applied after the shared props. */
488
+ ios?: any
489
+ android?: any
490
+ web?: any
491
+ }
492
+
493
+ export interface WebViewHandle {
494
+ /** Re-request the current document. */
495
+ reload(): void
496
+ /** Frame-local history navigation. */
497
+ goBack(): void
498
+ goForward(): void
499
+ stopLoading(): void
500
+ /** The platform view (`HTMLIFrameElement` / NS `WebView`). */
501
+ native: any
502
+ }
503
+
504
+ export interface WebViewLoadEvent {
505
+ /** The loaded document URL when the platform reports one — absent for
506
+ * `html` documents. */
507
+ url?: string
508
+ /** Failure description; present only on the `onError` path. */
509
+ error?: string
510
+ }
511
+
512
+ export interface WebViewContentSize {
513
+ width: number
514
+ height: number
515
+ }
516
+
517
+ /** Embedded web document — chrome-reset bucket: web renders a sandboxed
518
+ * `<iframe>`, native renders the OS web view (`webview` → WKWebView /
519
+ * android.webkit.WebView). The *frame* is normalized; the document's
520
+ * pixels belong to each platform's engine, same as TextInput's IME.
521
+ * No JS bridge: iframe `postMessage`, WKScriptMessageHandler, and
522
+ * `addJavascriptInterface` have different page-side contracts, so a
523
+ * shared one would be fake parity — reach it through the escape bags. */
524
+ export interface WebViewProps extends LayoutChildProps, AccessibilityProps {
525
+ className?: any
526
+ style?: any
527
+ id?: string
528
+ /** Remote document URL. Native also accepts `~/` bundle paths and
529
+ * absolute file paths (NS `src` grammar). */
530
+ src?: string
531
+ /** Inline HTML document — web `srcdoc`; native loads it through the
532
+ * `src` property's data path (`loadHTMLString`/`loadDataWithBaseURL`).
533
+ * Takes precedence over `src` when both are set. Treated as trusted
534
+ * content — the default web sandbox keeps `allow-same-origin`, so a
535
+ * srcdoc document can reach the embedding page. */
536
+ html?: string
537
+ /** After each successful document load (web `load`; native
538
+ * `loadFinished` without an error). */
539
+ onLoad?: (e: WebViewLoadEvent) => void
540
+ /** Report the embedded document's measured size when the platform can read
541
+ * it. Cross-origin browser frames cannot be inspected. */
542
+ onLayoutContent?: (size: WebViewContentSize) => void
543
+ /** Resize the host to the embedded document's measured height. Browser
544
+ * frames must be same-origin; native measurement is best-effort. */
545
+ matchContents?: boolean
546
+ /** On load failure. Native reports the NS `loadFinished` error string;
547
+ * web maps the iframe `error` event, which does not fire reliably
548
+ * cross-browser — treat as best-effort there. */
549
+ onError?: (e: WebViewLoadEvent) => void
550
+ /** Default true. `false` freezes inner scrolling: web writes
551
+ * `scrolling="no"`, iOS clears the WKWebView scrollView's
552
+ * `scrollEnabled`, Android eats move touch events on the view (link
553
+ * taps still pass; drag text selection inside the frame is lost). */
554
+ scrollEnabled?: boolean
555
+ /** Web only — the iframe `sandbox` token list. Defaults to
556
+ * `'allow-scripts allow-same-origin allow-forms allow-modals'`: the
557
+ * capabilities NS WebView content already has, while top navigation,
558
+ * popups, and downloads stay contained. Pass a token list to tighten,
559
+ * `false` for no sandbox attribute. Ignored on native — the OS web
560
+ * views are already isolated processes. */
561
+ sandbox?: string | false
562
+ /** Imperative handle — reload/back/forward/stop plus `native` for
563
+ * anything the shared props don't cover. */
564
+ bind?: (h: WebViewHandle) => void
565
+ /** Platform-specific properties are applied after shared props. */
566
+ ios?: any
567
+ android?: any
568
+ web?: any
569
+ }
570
+
571
+ export interface ImageProps extends LayoutChildProps {
572
+ className?: any
573
+ style?: any
574
+ id?: string
575
+ src: string
576
+ alt?: string
577
+ /** Platform-specific properties are applied after shared props. */
578
+ ios?: any
579
+ android?: any
580
+ web?: any
581
+ }
582
+
583
+ export interface ScreenProps {
584
+ className?: any
585
+ style?: any
586
+ children?: any
587
+ /** Platform-specific properties are applied after shared props. */
588
+ ios?: any
589
+ android?: any
590
+ web?: any
591
+ id?: string
592
+ }
593
+
594
+ // ---------- device seams ----------
595
+
596
+ export interface SafeAreaProps {
597
+ className?: any
598
+ style?: any
599
+ children?: any
600
+ /** Do not inset the child away from the system's safe area. */
601
+ ignoreSafeArea?: boolean
602
+ /** NativeScript props applied to the host after shared props. */
603
+ ios?: Record<string, any>
604
+ android?: Record<string, any>
605
+ web?: Record<string, any>
606
+ id?: string
607
+ }
608
+
609
+ export interface KeyboardAvoidingProps {
610
+ className?: any
611
+ style?: any
612
+ children?: any
613
+ ios?: Record<string, any>
614
+ android?: Record<string, any>
615
+ web?: Record<string, any>
616
+ id?: string
617
+ }
618
+
619
+ export interface DrawerProps {
620
+ className?: any
621
+ style?: any
622
+ id?: string
623
+ main?: any
624
+ drawer?: any
625
+ open?: boolean
626
+ /** Backdrop tap — the self-drawn leaf fires it on both platforms. */
627
+ onDismiss?: () => void
628
+ ios?: Record<string, any>
629
+ android?: Record<string, any>
630
+ web?: Record<string, any>
631
+ }
632
+
633
+ export interface SwitchProps {
634
+ className?: any
635
+ style?: any
636
+ id?: string
637
+ checked?: boolean
638
+ onCheckedChange?: (checked: boolean) => void
639
+ /** Platform-specific properties are applied after shared props. */
640
+ ios?: any
641
+ android?: any
642
+ web?: any
643
+ }
644
+
645
+ export interface ActivityIndicatorProps {
646
+ className?: any
647
+ style?: any
648
+ id?: string
649
+ busy?: boolean
650
+ ios?: Record<string, any>
651
+ android?: Record<string, any>
652
+ web?: Record<string, any>
653
+ }
654
+
655
+ export interface MeterProps {
656
+ className?: any
657
+ style?: any
658
+ id?: string
659
+ children?: any
660
+ value: number
661
+ max?: number
662
+ size?: number
663
+ strokeWidth?: number
664
+ color?: string
665
+ trackColor?: string
666
+ accessibilityLabel?: string
667
+ }
668
+
669
+ export interface SliderProps {
670
+ className?: any
671
+ style?: any
672
+ id?: string
673
+ value: number
674
+ minValue?: number
675
+ maxValue?: number
676
+ disabled?: boolean
677
+ onValueChange?: (value: number) => void
678
+ ios?: Record<string, any>
679
+ android?: Record<string, any>
680
+ web?: Record<string, any>
681
+ }
682
+
683
+ export interface IconProps {
684
+ className?: any
685
+ id?: string
686
+ name: string
687
+ size?: number
688
+ color?: string
689
+ ios?: Record<string, any>
690
+ android?: Record<string, any>
691
+ web?: Record<string, any>
692
+ }
693
+
694
+ /** One registered icon representation. `svg` contains path `d` data;
695
+ * `markup` is full inner-SVG markup (groups, transforms, several paths)
696
+ * rendered inside an `<svg viewBox>` shell on web and through `svgview`
697
+ * (ui-svg) on native. `font`, `src`, and `text` are fallback
698
+ * representations, in that order after SVG. `src` may be a raster source or
699
+ * an SVG source; SVG is auto-detected for inline markup, SVG data URIs, and
700
+ * `.svg` paths/URLs. Opaque resource names need `markup`/`svg` when their
701
+ * format cannot be inferred from the string. */
702
+ export interface IconGlyph {
703
+ svg?: string
704
+ markup?: string
705
+ viewBox?: string
706
+ text?: string
707
+ font?: { family: string; glyph: string }
708
+ src?: string
709
+ }
710
+
711
+ export interface HeadingProps {
712
+ className?: any
713
+ style?: any
714
+ children?: any
715
+ id?: string
716
+ level?: 1 | 2 | 3 | 4 | 5 | 6
717
+ ios?: Record<string, any>
718
+ android?: Record<string, any>
719
+ web?: Record<string, any>
720
+ }
721
+
722
+ // ---------- overlays ----------
723
+
724
+ export interface OverlayProps {
725
+ open?: boolean
726
+ onDismiss?: () => void
727
+ /** Enables a RootLayout shade that dismisses when tapped. */
728
+ shadeCover?: boolean
729
+ className?: any
730
+ style?: any
731
+ children?: any
732
+ ios?: Record<string, any>
733
+ android?: Record<string, any>
734
+ web?: Record<string, any>
735
+ }
736
+
737
+ export type PopoverPlacement = 'top' | 'bottom' | 'left' | 'right'
738
+
739
+ /** A platform-neutral ref to the host view or element that owns a popover. */
740
+ export interface PopoverAnchorRef {
741
+ readonly current: unknown
742
+ }
743
+
744
+ export interface PopoverProps {
745
+ /** Ref to a native view or web element, commonly populated by `bind`. */
746
+ anchor: PopoverAnchorRef
747
+ open?: boolean
748
+ placement?: PopoverPlacement
749
+ dismissOnOutsideTap?: boolean
750
+ onDismiss?: () => void
751
+ className?: any
752
+ style?: any
753
+ children?: any
754
+ ios?: Record<string, any>
755
+ android?: Record<string, any>
756
+ web?: Record<string, any>
757
+ }
758
+
759
+ export interface HoverableProps {
760
+ id?: string
761
+ /** Content shown after the pointer rests over the children on pointer
762
+ * platforms (web, macOS). Touch targets never mount the card — keep
763
+ * essential information out of it. */
764
+ card: any
765
+ /** Styling for the card's wrapper view inside the popover — e.g. a
766
+ * pointer bridge covering the anchor↔card gap or a positional offset. */
767
+ cardClassName?: any
768
+ cardStyle?: any
769
+ children?: any
770
+ openDelay?: number
771
+ closeDelay?: number
772
+ placement?: PopoverPlacement
773
+ className?: any
774
+ style?: any
775
+ ios?: Record<string, any>
776
+ android?: Record<string, any>
777
+ web?: Record<string, any>
778
+ }
779
+
780
+ /** Tooltip — `trigger` is the anchor content, `content` the hint body.
781
+ * Pointer platforms show the hint after hover/focus intent (web adds
782
+ * `aria-describedby` + Escape/scroll dismissal; macOS presents an anchored
783
+ * NSPopover). Touch targets render the trigger and never mount the hint —
784
+ * keep essential information out of `content`. */
785
+ export interface TooltipProps {
786
+ id?: string
787
+ trigger: any
788
+ content: any
789
+ /** Styling for the tooltip panel inside the popover. */
790
+ contentClassName?: any
791
+ contentStyle?: any
792
+ openDelay?: number
793
+ closeDelay?: number
794
+ placement?: PopoverPlacement
795
+ disabled?: boolean
796
+ className?: any
797
+ style?: any
798
+ ios?: Record<string, any>
799
+ android?: Record<string, any>
800
+ web?: Record<string, any>
801
+ }
802
+
803
+ export type ToastContent = string | (() => any)
804
+ export type ToastPosition =
805
+ | 'top'
806
+ | 'top-start'
807
+ | 'top-end'
808
+ | 'bottom'
809
+ | 'bottom-start'
810
+ | 'bottom-end'
811
+
812
+ export interface ToastOptions {
813
+ duration?: number
814
+ position?: ToastPosition
815
+ /** When set, the toast is positioned by Popover relative to this view. */
816
+ anchor?: PopoverAnchorRef
817
+ /** Placement used with `anchor`; `position` supplies the top/bottom default. */
818
+ placement?: PopoverPlacement
819
+ ios?: Record<string, any>
820
+ android?: Record<string, any>
821
+ web?: Record<string, any>
822
+ }
823
+
824
+ // ---------- measurement ----------
825
+
826
+ export interface MeasureBounds {
827
+ x: number
828
+ y: number
829
+ width: number
830
+ height: number
831
+ }
832
+
833
+ export interface UseMeasureOptions {
834
+ /** Re-measure on layout, resize, scroll, and content-size changes. Defaults to true. */
835
+ observe?: boolean
836
+ }
837
+
838
+ export interface MeasureResult {
839
+ /** Pass to a View's `bind` prop. */
840
+ bind: (element: any) => void
841
+ bounds: MeasureBounds | null
842
+ }
843
+
844
+ export interface ModalProps {
845
+ open?: boolean
846
+ onClose?: (result?: ModalOpenResult) => void
847
+ fullscreen?: boolean
848
+ /** Native: sheet uses fullscreen=false (iOS form sheet; Android centered
849
+ * dialog), fullscreen uses fullscreen=true. Web: dialog is a centered
850
+ * card, sheet is bottom-anchored, fullscreen is the default dialog size. */
851
+ presentation?: 'sheet' | 'fullscreen' | 'dialog'
852
+ /** Component reference rendered inside the modal's separate root. When
853
+ * both component and children are set, component takes precedence. */
854
+ component?: any
855
+ /** Props passed to component. Context and theme do not cross modal roots. */
856
+ params?: any
857
+ children?: any
858
+ }
859
+
860
+ /** Options for `openModal`. `fullscreen` is retained for callers using the
861
+ * NativeScript option directly; `presentation` takes precedence when set.
862
+ * Android's non-fullscreen modal is a centered dialog, not a bottom sheet. */
863
+ export interface ModalOpenOptions {
864
+ presentation?: 'sheet' | 'fullscreen' | 'dialog'
865
+ fullscreen?: boolean
866
+ animated?: boolean
867
+ }
868
+
869
+ /** Value supplied to a modal close callback and returned by `openModal`. */
870
+ export type ModalOpenResult = unknown
871
+
872
+ /** Public function shape of the imperative modal service. */
873
+ export type OpenModal = (
874
+ component: any,
875
+ params?: any,
876
+ options?: ModalOpenOptions,
877
+ ) => Promise<ModalOpenResult>
878
+
879
+ // ---------- sheet (in-window bottom panel) ----------
880
+
881
+ /** Declarative in-window sheet: bottom-anchored panel on the enclosing
882
+ * screen's RootLayout (native) or a document-body portal layer (web).
883
+ * Unlike `Modal presentation='sheet'` (system modal), content stays
884
+ * inside the app window — same window region as the declaring page. */
885
+ export interface SheetProps {
886
+ open?: boolean
887
+ /** Called when the shade is tapped or the sheet is dismissed by the
888
+ * platform — not on programmatic `open`→`false` transitions. */
889
+ onDismiss?: () => void
890
+ /** Dim backdrop + tap-to-dismiss (default true). */
891
+ shadeCover?: boolean
892
+ /** Snap heights as viewport-height fractions, e.g. `[0.25, 0.5, 1]` —
893
+ * sorted ascending; the sheet opens at the smallest and drags between
894
+ * detents via the grabber strip, releasing below half of the smallest
895
+ * dismisses (same dismissal as a shade tap — `onDismiss` / resolve).
896
+ * Absent → the panel keeps its content-sized height. In-window on
897
+ * every target; OS sheet presentations stay in the platform
898
+ * subpaths. */
899
+ detents?: number[]
900
+ className?: any
901
+ style?: any
902
+ children?: any
903
+ ios?: Record<string, any>
904
+ android?: Record<string, any>
905
+ web?: Record<string, any>
906
+ }
907
+
908
+ /** Options for the imperative `openSheet` service. */
909
+ export interface SheetOpenOptions {
910
+ shadeCover?: boolean
911
+ /** Same contract as `SheetProps.detents`. */
912
+ detents?: number[]
913
+ }
914
+
915
+ /** Imperative sheet: mounts `component` on a dedicated root in a bottom
916
+ * sheet and resolves with the value passed to `close(result)`. The
917
+ * component receives `{ params, close }`. */
918
+ export type OpenSheet = (
919
+ component: any,
920
+ params?: any,
921
+ options?: SheetOpenOptions,
922
+ ) => Promise<ModalOpenResult>
923
+
924
+ // ---------- tabs / navigation shells ----------
925
+
926
+ export interface TabSpec {
927
+ title: string
928
+ /** Registered icon name (see `registerIcons`). The shared self-drawn
929
+ * `Tabs` renders the glyph through `Icon` on every platform. The
930
+ * platform tab bars (`UITabBar`/`BottomNavigationView` in the ios/
931
+ * android subpaths) consume the glyph's `src` (a NativeScript
932
+ * iconSource URI — `sys://` SF Symbol, `res://`, `font://`, file
933
+ * path) or `font`/`text` representation; `svg`/`markup`-only glyphs
934
+ * warn and render title-only there. */
935
+ icon?: string
936
+ render: () => any
937
+ /** Named parallel stack — the pane is the route outlet for `stack`
938
+ * (pushed screens render in place). The platform tab bars host a real
939
+ * Frame per such pane. */
940
+ stack?: string
941
+ }
942
+
943
+ export interface TabsProps {
944
+ className?: any
945
+ style?: any
946
+ id?: string
947
+ tabs: readonly TabSpec[]
948
+ selectedIndex?: number
949
+ onSelectedIndexChanged?: (index: number) => void
950
+ /** Renders a pushed route's screen by name (the app owns the table).
951
+ * Web: route outlet. Native: pushes render inside the pane's Frame. */
952
+ resolveScreen?: (name: string, params: Record<string, unknown>) => any
953
+ }
954
+
955
+ /** Platform tab-bar item shape. `icon` may be a registered name or a native
956
+ * asset value returned by `Icon.select()` from the matching subpath. */
957
+ export type PlatformTabSpec = Omit<TabSpec, 'icon'> & {
958
+ icon?: string
959
+ }
960
+
961
+ export type PlatformTabsProps = Omit<TabsProps, 'tabs'> & {
962
+ tabs: readonly PlatformTabSpec[]
963
+ ios?: Record<string, any>
964
+ android?: Record<string, any>
965
+ }
966
+
967
+ // ---------- routes ----------
968
+
969
+ export interface Route {
970
+ stack: string
971
+ name: string
972
+ params: Record<string, unknown>
973
+ /** 'push' (default) pushes onto the stack · 'modal' opens its own root
974
+ * (native: `showModal`; web: overlay pane, URL preserved) · 'fade' is a
975
+ * push with a fade transition. A `+modal`/`+fade` filename suffix in
976
+ * the route dir sets the manifest default; this field overrides it. */
977
+ presentation?: 'push' | 'modal' | 'fade'
978
+ /** Loader result supplied to the route screen as `data`. */
979
+ loaderData?: unknown
980
+ /** Loader rejection supplied to the route screen as `error`. */
981
+ loaderError?: unknown
982
+ /** Context returned by the route's `beforeLoad` export. It is merged into
983
+ * screen props and remains available from `useRoute`. */
984
+ context?: RouteContext
985
+ }
986
+
987
+ /** Values shared by a route guard and the screen it admits. */
988
+ export type RouteContext = Record<string, unknown>
989
+
990
+ export interface BeforeLoadArgs {
991
+ params: Record<string, unknown>
992
+ context: RouteContext
993
+ }
994
+
995
+ export type BeforeLoad = (
996
+ args: BeforeLoadArgs,
997
+ ) => RouteContext | void | Promise<RouteContext | void>
998
+
999
+ /** The deliberately small cross-platform head surface. `meta` keys become
1000
+ * web `<meta name="..." content="...">` tags; native consumes `title`. */
1001
+ export interface RouteHead {
1002
+ title?: string
1003
+ meta?: Record<string, string>
1004
+ }
1005
+
1006
+ export type RouteHeadExport = RouteHead | ((params: Record<string, unknown>) => RouteHead)
1007
+
1008
+ export interface LinkProps {
1009
+ href: string
1010
+ target?: string
1011
+ className?: any
1012
+ children?: any
1013
+ }
1014
+
1015
+ export interface NavLinkProps {
1016
+ route: Route
1017
+ activeClassName?: string
1018
+ className?: any
1019
+ children?: any
1020
+ }
1021
+
1022
+ /** name → screen component table for `registerScreens` — the app owns the
1023
+ * route table; native `pushRoute` resolves `route.name` through it and
1024
+ * web outlets fall back to it via `screenFor`. Values are component
1025
+ * functions (`() => Element` / UniversalComponent shapes both fit). */
1026
+ export type ScreenTable = Record<string, any>
1027
+
1028
+ /** One route file's entry in the derived manifest. `name` is the file
1029
+ * path under the route dir with `[param]` segments normalized to
1030
+ * `:param` (`app/demo/[id].tsrx` → `demo/:id`); `segments` is the URL
1031
+ * pattern used for web path matching/substitution. */
1032
+ export interface RouteMeta {
1033
+ name: string
1034
+ segments: string[]
1035
+ params: string[]
1036
+ /** Source file (glob key) — diagnostics only. */
1037
+ file: string
1038
+ /** Declared default presentation — set by a `+modal`/`+fade` filename
1039
+ * suffix (`app/settings+modal.tsrx` → route 'settings', modal). */
1040
+ presentation?: 'push' | 'modal' | 'fade'
1041
+ /** Optional `loader` named export — a prefetch hook, not a data layer.
1042
+ * pushRoute fires it (fire-and-forget) before navigating so the
1043
+ * screen's `query$` reads hit a warm cache; boot/deep-link routes
1044
+ * skip it (the screen mounts in the same tick anyway). */
1045
+ loader?: (params: Record<string, unknown>) => unknown
1046
+ /** Optional guard awaited before a push commits. A thrown `redirect(...)`
1047
+ * short-circuits the attempted route. */
1048
+ beforeLoad?: BeforeLoad
1049
+ /** Optional route title/meta declaration, or a params-only function. */
1050
+ head?: RouteHeadExport
1051
+ }
1052
+
1053
+ /** Output of `deriveRouteManifest` — `screens` feeds `registerScreens`
1054
+ * (native pushRoute + web outlet fallback), `routes` feeds web URL
1055
+ * matching, `layouts` catalogs `_layout` files by directory ('' = root). */
1056
+ export interface RouteManifest {
1057
+ screens: ScreenTable
1058
+ routes: RouteMeta[]
1059
+ layouts: Record<string, any>
1060
+ loaders?: Record<string, (params: Record<string, unknown>) => unknown | Promise<unknown>>
1061
+ }
1062
+
1063
+ /** One programmatic route entry for `defineRoutes` — the manifest fields a
1064
+ * route file would have produced, supplied directly. `path` uses the
1065
+ * route-dir vocabulary: `'docs/:slug'` (or `'docs/[slug]'`), `'index'`/`''`
1066
+ * for the root route. `screen` is the component itself — not a module. */
1067
+ export interface RouteSpec {
1068
+ path: string
1069
+ screen: any
1070
+ /** Default presentation, like a `+modal`/`+fade` filename suffix. */
1071
+ presentation?: 'push' | 'modal' | 'fade'
1072
+ loader?: RouteMeta['loader']
1073
+ beforeLoad?: BeforeLoad
1074
+ head?: RouteHeadExport
1075
+ /** Diagnostics label recorded on `RouteMeta.file` (warn strings). */
1076
+ source?: string
1077
+ }
1078
+
1079
+ /** Input to `defineRoutes`: the route list plus optional path-keyed layouts
1080
+ * — `layouts: { docs: Shell }` plays the `_layout.tsrx` role for every
1081
+ * route under `docs/*`. */
1082
+ export interface RouteSpecSet {
1083
+ routes: readonly RouteSpec[]
1084
+ layouts?: Record<string, any>
1085
+ }
1086
+
1087
+ export interface OpenWindowOptions {
1088
+ /** Data made available to the native window content resolver. */
1089
+ data?: Record<string, unknown>
1090
+ /** Optional URL used by the web window. */
1091
+ url?: string
1092
+ }
1093
+
1094
+ // ---------- animation ----------
1095
+
1096
+ /**
1097
+ * Value returned by `useAnimation(initial, prop)`. On web, `prop` supports
1098
+ * translateX/translateY/translateZ, scale/scaleX/scaleY, rotate/rotateX/
1099
+ * rotateY, and skewX/skewY as CSS transforms, plus `opacity` and other CSS
1100
+ * style properties. On NativeScript, `prop` is the name of a NativeScript
1101
+ * view property (for example, `translateX` or `opacity`).
1102
+ */
1103
+ export interface AnimatedValue {
1104
+ readonly value: number
1105
+ bind(el: any): void
1106
+ to(target: number, opts?: { duration?: number }): void
1107
+ spring(target: number, opts?: { damping?: number; stiffness?: number }): void
1108
+ stop(): void
1109
+ }
1110
+
1111
+ // ---------- self-drawn components (Phase 1) ----------
1112
+
1113
+ /** Button composes Pressable — same-props/same-pixels, self-drawn. `loading`
1114
+ * shows the spinner and blocks presses. */
1115
+ export interface ButtonProps extends PressableProps {
1116
+ loading?: boolean
1117
+ /** Content rendered before children (e.g. an Icon). */
1118
+ leading?: any
1119
+ /** Content rendered after children. */
1120
+ trailing?: any
1121
+ }
1122
+
1123
+ /** Collapsible shows/hides `children` behind a `trigger`. Controlled via
1124
+ * `open`/`onOpenChange` or uncontrolled via `defaultOpen`. */
1125
+ export interface CollapsibleProps {
1126
+ className?: any
1127
+ style?: any
1128
+ id?: string
1129
+ trigger?: any
1130
+ children?: any
1131
+ open?: boolean
1132
+ defaultOpen?: boolean
1133
+ disabled?: boolean
1134
+ onOpenChange?: (open: boolean) => void
1135
+ accessibilityLabel?: string
1136
+ /** Platform-specific properties are applied after shared props. */
1137
+ ios?: any
1138
+ android?: any
1139
+ web?: any
1140
+ }
1141
+
1142
+ export interface AccordionItemSpec {
1143
+ key: string
1144
+ header?: any
1145
+ content?: any
1146
+ disabled?: boolean
1147
+ }
1148
+
1149
+ /** Accordion — a list of Collapsibles. `open` is the open key (or keys with
1150
+ * `multiple`); omit it for uncontrolled via `defaultOpen`. */
1151
+ export interface AccordionProps {
1152
+ className?: any
1153
+ style?: any
1154
+ id?: string
1155
+ items: AccordionItemSpec[]
1156
+ multiple?: boolean
1157
+ open?: string | string[]
1158
+ defaultOpen?: string | string[]
1159
+ onOpenChange?: (open: string | string[]) => void
1160
+ /** Platform-specific properties are applied after shared props. */
1161
+ ios?: any
1162
+ android?: any
1163
+ web?: any
1164
+ }
1165
+
1166
+ /** Self-drawn checkbox — box + check mark, identical pixels across targets. */
1167
+ export interface CheckboxProps {
1168
+ className?: any
1169
+ style?: any
1170
+ id?: string
1171
+ checked?: boolean
1172
+ disabled?: boolean
1173
+ onCheckedChange?: (checked: boolean) => void
1174
+ label?: string
1175
+ accessibilityLabel?: string
1176
+ /** Platform-specific properties are applied after shared props. */
1177
+ ios?: any
1178
+ android?: any
1179
+ web?: any
1180
+ }
1181
+
1182
+ export interface RadioOption {
1183
+ value: string
1184
+ label?: string
1185
+ disabled?: boolean
1186
+ }
1187
+
1188
+ /** Self-drawn radio group — dot options in a column/row. */
1189
+ export interface RadioGroupProps {
1190
+ className?: any
1191
+ style?: any
1192
+ id?: string
1193
+ options: RadioOption[]
1194
+ value?: string
1195
+ disabled?: boolean
1196
+ horizontal?: boolean
1197
+ onValueChange?: (value: string) => void
1198
+ accessibilityLabel?: string
1199
+ /** Platform-specific properties are applied after shared props. */
1200
+ ios?: any
1201
+ android?: any
1202
+ web?: any
1203
+ }
1204
+
1205
+ /** Self-drawn segmented control — a row of equal-width segments in a track,
1206
+ * one selected (UISegmentedControl / Material segmented-button shape, no OS
1207
+ * chrome). `value`/`onValueChange` for controlled, `defaultValue` for
1208
+ * uncontrolled; `disabled` on the group or per-option. Sizes come from
1209
+ * className, matching the Button family. */
1210
+ export interface SegmentedControlProps {
1211
+ className?: any
1212
+ style?: any
1213
+ id?: string
1214
+ options: RadioOption[]
1215
+ value?: string
1216
+ defaultValue?: string
1217
+ onValueChange?: (value: string) => void
1218
+ disabled?: boolean
1219
+ accessibilityLabel?: string
1220
+ /** Platform-specific properties are applied after shared props. */
1221
+ ios?: any
1222
+ android?: any
1223
+ web?: any
1224
+ }
1225
+
1226
+ export interface MenuItem {
1227
+ key: string
1228
+ label?: string
1229
+ icon?: string
1230
+ disabled?: boolean
1231
+ onSelect?: () => void
1232
+ }
1233
+
1234
+ /** DropdownMenu — `trigger` anchored to a self-drawn item list via Popover.
1235
+ * Same anchored listbox on every target (decision #48). */
1236
+ export interface DropdownMenuProps {
1237
+ className?: any
1238
+ style?: any
1239
+ id?: string
1240
+ /** Anchor content — rendered inside the trigger Pressable. */
1241
+ trigger?: any
1242
+ items: MenuItem[]
1243
+ open?: boolean
1244
+ defaultOpen?: boolean
1245
+ onOpenChange?: (open: boolean) => void
1246
+ placement?: PopoverPlacement
1247
+ disabled?: boolean
1248
+ /** Platform-specific properties are applied after shared props. */
1249
+ ios?: any
1250
+ android?: any
1251
+ web?: any
1252
+ }
1253
+
1254
+ /** ContextMenu — same anchored list as DropdownMenu, opened by right-click
1255
+ * on web and long-press on native. */
1256
+ export interface ContextMenuProps {
1257
+ className?: any
1258
+ style?: any
1259
+ id?: string
1260
+ items: MenuItem[]
1261
+ open?: boolean
1262
+ defaultOpen?: boolean
1263
+ onOpenChange?: (open: boolean) => void
1264
+ children?: any
1265
+ disabled?: boolean
1266
+ /** Platform-specific properties are applied after shared props. */
1267
+ ios?: any
1268
+ android?: any
1269
+ web?: any
1270
+ }
1271
+
1272
+ /** Badge — inline label chip. Pure composition, unstyled beyond layout. */
1273
+ export interface BadgeProps {
1274
+ className?: any
1275
+ style?: any
1276
+ id?: string
1277
+ children?: any
1278
+ /** Platform-specific properties are applied after shared props. */
1279
+ ios?: any
1280
+ android?: any
1281
+ web?: any
1282
+ }
1283
+
1284
+ /** Separator — hairline rule between content. */
1285
+ export interface SeparatorProps {
1286
+ className?: any
1287
+ style?: any
1288
+ id?: string
1289
+ orientation?: 'horizontal' | 'vertical'
1290
+ /** Platform-specific properties are applied after shared props. */
1291
+ ios?: any
1292
+ android?: any
1293
+ web?: any
1294
+ }
1295
+
1296
+ /** Skeleton — placeholder block shown while content loads. */
1297
+ export interface SkeletonProps {
1298
+ className?: any
1299
+ style?: any
1300
+ id?: string
1301
+ width?: number
1302
+ height?: number
1303
+ /** Platform-specific properties are applied after shared props. */
1304
+ ios?: any
1305
+ android?: any
1306
+ web?: any
1307
+ }
1308
+
1309
+ /** Avatar — circular image with a text fallback. */
1310
+ export interface AvatarProps {
1311
+ className?: any
1312
+ style?: any
1313
+ id?: string
1314
+ src?: string
1315
+ alt?: string
1316
+ /** Fallback text (initials) shown when `src` is missing/fails. */
1317
+ fallback?: string
1318
+ size?: number
1319
+ /** Platform-specific properties are applied after shared props. */
1320
+ ios?: any
1321
+ android?: any
1322
+ web?: any
1323
+ }
1324
+
1325
+ /** AvatarGroup — overlapping row of avatars with an optional `+N` overflow. */
1326
+ export interface AvatarGroupProps {
1327
+ className?: any
1328
+ style?: any
1329
+ id?: string
1330
+ children?: any
1331
+ /** Max avatars rendered; the rest collapse into a `+N` avatar. */
1332
+ max?: number
1333
+ size?: number
1334
+ /** Platform-specific properties are applied after shared props. */
1335
+ ios?: any
1336
+ android?: any
1337
+ web?: any
1338
+ }
1339
+
1340
+ // ---------- form field layer (Phase 2) ----------
1341
+
1342
+ /** FormField wraps a control with a label, hint, and error text. The error
1343
+ * replaces the hint when present. Children is the control element. */
1344
+ export interface FormFieldProps {
1345
+ className?: any
1346
+ style?: any
1347
+ id?: string
1348
+ label?: string
1349
+ hint?: string
1350
+ error?: string
1351
+ required?: boolean
1352
+ children?: any
1353
+ ios?: any
1354
+ android?: any
1355
+ web?: any
1356
+ }
1357
+
1358
+ /** FieldGroup — labeled group of related fields (role=group). */
1359
+ export interface FieldGroupProps {
1360
+ className?: any
1361
+ style?: any
1362
+ id?: string
1363
+ label?: string
1364
+ children?: any
1365
+ ios?: any
1366
+ android?: any
1367
+ web?: any
1368
+ }
1369
+
1370
+ /** Shared settings/navigation row. Use the four shorthand props for common
1371
+ * rows, or `ListItem.Leading`/`Content`/`Supporting`/`Trailing` children
1372
+ * when the row needs custom composition. */
1373
+ export interface ListItemProps extends AccessibilityProps {
1374
+ className?: any
1375
+ style?: any
1376
+ id?: string
1377
+ title?: any
1378
+ supportingText?: any
1379
+ leading?: any
1380
+ trailing?: any
1381
+ onPress?: () => void
1382
+ disabled?: boolean
1383
+ children?: any
1384
+ }
1385
+
1386
+ export interface ListItemSlotProps {
1387
+ className?: any
1388
+ children?: any
1389
+ }
1390
+
1391
+ export interface ListItemComponent {
1392
+ (props: ListItemProps): unknown
1393
+ Leading: (props: ListItemSlotProps) => unknown
1394
+ Content: (props: ListItemSlotProps) => unknown
1395
+ Supporting: (props: ListItemSlotProps) => unknown
1396
+ Trailing: (props: ListItemSlotProps) => unknown
1397
+ }
1398
+
1399
+ /** InputNumber — normalized TextInput (number keyboard) flanked by −/+
1400
+ * steppers. `value`/`onValueChange` for controlled, `defaultValue` for
1401
+ * uncontrolled. `step` defaults to 1; `min`/`max` clamp. */
1402
+ export interface InputNumberProps {
1403
+ className?: any
1404
+ style?: any
1405
+ id?: string
1406
+ value?: number
1407
+ defaultValue?: number
1408
+ min?: number
1409
+ max?: number
1410
+ step?: number
1411
+ disabled?: boolean
1412
+ placeholder?: string
1413
+ onValueChange?: (value: number) => void
1414
+ ios?: any
1415
+ android?: any
1416
+ web?: any
1417
+ }
1418
+
1419
+ /** PinInput — a row of single-character cells that auto-advance on entry.
1420
+ * `onComplete` fires when all `length` cells are filled. */
1421
+ export interface PinInputProps {
1422
+ className?: any
1423
+ style?: any
1424
+ id?: string
1425
+ length?: number
1426
+ value?: string
1427
+ onValueChange?: (value: string) => void
1428
+ onComplete?: (value: string) => void
1429
+ secure?: boolean
1430
+ disabled?: boolean
1431
+ ios?: any
1432
+ android?: any
1433
+ web?: any
1434
+ }
1435
+
1436
+ export interface SelectOption {
1437
+ value: string
1438
+ label?: string
1439
+ disabled?: boolean
1440
+ }
1441
+
1442
+ /** Select — anchored self-drawn listbox on every target (decision #48).
1443
+ * `multiple` keeps the listbox open and reports string[]; `searchable`
1444
+ * puts a normalized TextInput filter at the top of the listbox. */
1445
+ export interface SelectProps {
1446
+ className?: any
1447
+ style?: any
1448
+ id?: string
1449
+ options: SelectOption[]
1450
+ value?: string | string[]
1451
+ defaultValue?: string | string[]
1452
+ multiple?: boolean
1453
+ searchable?: boolean
1454
+ placeholder?: string
1455
+ open?: boolean
1456
+ defaultOpen?: boolean
1457
+ onOpenChange?: (open: boolean) => void
1458
+ onValueChange?: (value: string | string[]) => void
1459
+ disabled?: boolean
1460
+ placement?: PopoverPlacement
1461
+ accessibilityLabel?: string
1462
+ ios?: any
1463
+ android?: any
1464
+ web?: any
1465
+ }
1466
+
1467
+ /** InputTags — chip list + trailing normalized TextInput. Enter commits a
1468
+ * tag, Backspace on an empty field removes the last tag. */
1469
+ export interface InputTagsProps {
1470
+ className?: any
1471
+ style?: any
1472
+ id?: string
1473
+ value?: string[]
1474
+ defaultValue?: string[]
1475
+ onValueChange?: (tags: string[]) => void
1476
+ placeholder?: string
1477
+ max?: number
1478
+ disabled?: boolean
1479
+ ios?: any
1480
+ android?: any
1481
+ web?: any
1482
+ }
1483
+
1484
+ /** InputRating — row of tappable glyphs reporting a 1..max score. */
1485
+ export interface InputRatingProps {
1486
+ className?: any
1487
+ style?: any
1488
+ id?: string
1489
+ value?: number
1490
+ defaultValue?: number
1491
+ max?: number
1492
+ /** Glyph per cell — a Text character (default ★) or a registered Icon name. */
1493
+ icon?: string
1494
+ onValueChange?: (value: number) => void
1495
+ disabled?: boolean
1496
+ accessibilityLabel?: string
1497
+ ios?: any
1498
+ android?: any
1499
+ web?: any
1500
+ }
1501
+
1502
+ /** CheckboxGroup — multi-select list of self-drawn checkboxes. */
1503
+ export interface CheckboxGroupProps {
1504
+ className?: any
1505
+ style?: any
1506
+ id?: string
1507
+ options: RadioOption[]
1508
+ value?: string[]
1509
+ defaultValue?: string[]
1510
+ onValueChange?: (values: string[]) => void
1511
+ disabled?: boolean
1512
+ horizontal?: boolean
1513
+ accessibilityLabel?: string
1514
+ ios?: any
1515
+ android?: any
1516
+ web?: any
1517
+ }
1518
+
1519
+ // ---------- navigation & wayfinding (Phase 3) ----------
1520
+
1521
+ export interface BreadcrumbItem {
1522
+ label: string
1523
+ onSelect?: () => void
1524
+ }
1525
+
1526
+ /** Breadcrumb — ancestor trail. Items render as pressable links separated
1527
+ * by `separator` (default /). */
1528
+ export interface BreadcrumbProps {
1529
+ className?: any
1530
+ style?: any
1531
+ id?: string
1532
+ items: BreadcrumbItem[]
1533
+ separator?: string
1534
+ accessibilityLabel?: string
1535
+ ios?: any
1536
+ android?: any
1537
+ web?: any
1538
+ }
1539
+
1540
+ /** Pagination — prev/next + a windowed run of page buttons around `page`. */
1541
+ export interface PaginationProps {
1542
+ className?: any
1543
+ style?: any
1544
+ id?: string
1545
+ page: number
1546
+ pageCount: number
1547
+ /** Pages shown to each side of `page` (default 1). */
1548
+ siblingCount?: number
1549
+ onPageChange?: (page: number) => void
1550
+ disabled?: boolean
1551
+ accessibilityLabel?: string
1552
+ ios?: any
1553
+ android?: any
1554
+ web?: any
1555
+ }
1556
+
1557
+ export interface StepperStep {
1558
+ key: string
1559
+ label?: string
1560
+ icon?: string
1561
+ disabled?: boolean
1562
+ }
1563
+
1564
+ /** Stepper — numbered step row. Steps before `current` show a done mark;
1565
+ * tapping a non-disabled step calls `onStepChange`. */
1566
+ export interface StepperProps {
1567
+ className?: any
1568
+ style?: any
1569
+ id?: string
1570
+ steps: StepperStep[]
1571
+ current?: number
1572
+ onStepChange?: (index: number) => void
1573
+ accessibilityLabel?: string
1574
+ ios?: any
1575
+ android?: any
1576
+ web?: any
1577
+ }
1578
+
1579
+ export interface NavigationMenuItem {
1580
+ key: string
1581
+ label?: string
1582
+ icon?: string
1583
+ active?: boolean
1584
+ disabled?: boolean
1585
+ onSelect?: () => void
1586
+ }
1587
+
1588
+ /** NavigationMenu — row (or column) of nav items; mostly a desktop/web
1589
+ * idiom — the mobile equivalent is Tabs/Drawer. */
1590
+ export interface NavigationMenuProps {
1591
+ className?: any
1592
+ style?: any
1593
+ id?: string
1594
+ items: NavigationMenuItem[]
1595
+ horizontal?: boolean
1596
+ accessibilityLabel?: string
1597
+ ios?: any
1598
+ android?: any
1599
+ web?: any
1600
+ }
1601
+
1602
+ /** CommandPalette — overlay with a search field over a filtered action
1603
+ * list. Esc/outside dismisses, Enter selects the highlighted match. */
1604
+ export interface CommandPaletteProps {
1605
+ className?: any
1606
+ style?: any
1607
+ id?: string
1608
+ open?: boolean
1609
+ onOpenChange?: (open: boolean) => void
1610
+ items: MenuItem[]
1611
+ placeholder?: string
1612
+ ios?: any
1613
+ android?: any
1614
+ web?: any
1615
+ }
1616
+
1617
+ // ---------- data display (Phase 4) ----------
1618
+
1619
+ export interface TableColumn {
1620
+ key: string
1621
+ label?: string
1622
+ /** Column width in dips; omit to share the remaining space evenly. */
1623
+ width?: number
1624
+ align?: 'left' | 'center' | 'right'
1625
+ }
1626
+
1627
+ /** Table — self-drawn grid via rows + cells. Bounded and unvirtualized:
1628
+ * large datasets belong to the platform UITableView/RecyclerView
1629
+ * subpaths, not this component. */
1630
+ export interface TableProps {
1631
+ className?: any
1632
+ style?: any
1633
+ id?: string
1634
+ columns: TableColumn[]
1635
+ rows: Record<string, any>[]
1636
+ /** Cell override — default renders row[col.key] as text. */
1637
+ renderCell?: (row: Record<string, any>, column: TableColumn, rowIndex: number) => any
1638
+ /** Row key; defaults to the row index. */
1639
+ keyFor?: (row: Record<string, any>, rowIndex: number) => string
1640
+ onRowPress?: (row: Record<string, any>, rowIndex: number) => void
1641
+ empty?: any
1642
+ ios?: any
1643
+ android?: any
1644
+ web?: any
1645
+ }
1646
+
1647
+ export interface TimelineItem {
1648
+ key: string
1649
+ title?: string
1650
+ description?: string
1651
+ time?: string
1652
+ icon?: string
1653
+ }
1654
+
1655
+ /** Timeline — vertical list of events with dot + connector. */
1656
+ export interface TimelineProps {
1657
+ className?: any
1658
+ style?: any
1659
+ id?: string
1660
+ items: TimelineItem[]
1661
+ ios?: any
1662
+ android?: any
1663
+ web?: any
1664
+ }
1665
+
1666
+ export interface TreeNode {
1667
+ key: string
1668
+ label?: string
1669
+ children?: TreeNode[]
1670
+ disabled?: boolean
1671
+ }
1672
+
1673
+ /** Tree — recursive indent + collapse. `defaultExpanded` seeds the open
1674
+ * set; `onToggle` reports changes. */
1675
+ export interface TreeProps {
1676
+ className?: any
1677
+ style?: any
1678
+ id?: string
1679
+ nodes: TreeNode[]
1680
+ defaultExpanded?: string[]
1681
+ onToggle?: (key: string, open: boolean) => void
1682
+ onSelect?: (node: TreeNode) => void
1683
+ ios?: any
1684
+ android?: any
1685
+ web?: any
1686
+ }
1687
+
1688
+ /** Alert — status callout. `tone` maps to a class modifier; error tone
1689
+ * gets role=alert on web, others role=status. */
1690
+ export interface AlertProps {
1691
+ className?: any
1692
+ style?: any
1693
+ id?: string
1694
+ tone?: 'info' | 'success' | 'warning' | 'error'
1695
+ icon?: string
1696
+ title?: string
1697
+ children?: any
1698
+ ios?: any
1699
+ android?: any
1700
+ web?: any
1701
+ }
1702
+
1703
+ /** Card — container with optional header/footer slots. */
1704
+ export interface CardProps {
1705
+ className?: any
1706
+ style?: any
1707
+ id?: string
1708
+ header?: any
1709
+ footer?: any
1710
+ children?: any
1711
+ ios?: any
1712
+ android?: any
1713
+ web?: any
1714
+ }
1715
+
1716
+ /** Chip — small action/filter element: pressable, optional selected state,
1717
+ * optional ✕ remove affordance. */
1718
+ export interface ChipProps {
1719
+ className?: any
1720
+ style?: any
1721
+ id?: string
1722
+ children?: any
1723
+ selected?: boolean
1724
+ disabled?: boolean
1725
+ onSelect?: () => void
1726
+ onRemove?: () => void
1727
+ accessibilityLabel?: string
1728
+ ios?: any
1729
+ android?: any
1730
+ web?: any
1731
+ }
1732
+
1733
+ /** Kbd — keyboard key glyph (⌘K styling hook). */
1734
+ export interface KbdProps {
1735
+ className?: any
1736
+ style?: any
1737
+ id?: string
1738
+ children?: any
1739
+ ios?: any
1740
+ android?: any
1741
+ web?: any
1742
+ }
1743
+
1744
+ /** Empty — empty-state block: icon + title + description + actions. */
1745
+ export interface EmptyProps {
1746
+ className?: any
1747
+ style?: any
1748
+ id?: string
1749
+ icon?: string
1750
+ title?: string
1751
+ description?: string
1752
+ children?: any
1753
+ ios?: any
1754
+ android?: any
1755
+ web?: any
1756
+ }
1757
+
1758
+ /** Banner — inline notice strip with optional dismiss. */
1759
+ export interface BannerProps {
1760
+ className?: any
1761
+ style?: any
1762
+ id?: string
1763
+ icon?: string
1764
+ children?: any
1765
+ onDismiss?: () => void
1766
+ ios?: any
1767
+ android?: any
1768
+ web?: any
1769
+ }
1770
+
1771
+ /** User — avatar + name/description row. */
1772
+ export interface UserProps {
1773
+ className?: any
1774
+ style?: any
1775
+ id?: string
1776
+ name?: string
1777
+ description?: string
1778
+ src?: string
1779
+ fallback?: string
1780
+ size?: number
1781
+ onSelect?: () => void
1782
+ ios?: any
1783
+ android?: any
1784
+ web?: any
1785
+ }
1786
+
1787
+ /** ProgressGroup — stacked labeled Meter rows. */
1788
+ export interface ProgressGroupProps {
1789
+ className?: any
1790
+ style?: any
1791
+ id?: string
1792
+ items: { key: string; label?: string; value: number; max?: number }[]
1793
+ ios?: any
1794
+ android?: any
1795
+ web?: any
1796
+ }
1797
+
1798
+ // ---------- theme ----------
1799
+
1800
+ export type ColorScheme = 'light' | 'dark'
1801
+
1802
+ // ---------- stores ----------
1803
+
1804
+ /** Minimal external-store contract `useStore` subscribes to. */
1805
+ export interface ReadableStore<T> {
1806
+ get(): T
1807
+ subscribe(notify: () => void): () => void
1808
+ }
1809
+
1810
+ export interface Store<T> extends ReadableStore<T> {
1811
+ set(next: T | ((prev: T) => T)): void
1812
+ }