@octane-xplat/ui 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (893) hide show
  1. package/README.md +17 -4
  2. package/dist/native/Absolute.tsrx.js +43 -0
  3. package/dist/native/Accordion.tsrx.js +75 -0
  4. package/dist/native/ActivityIndicator.tsrx.js +35 -0
  5. package/dist/native/Alert.tsrx.js +74 -0
  6. package/dist/native/Avatar.tsrx.js +76 -0
  7. package/dist/native/AvatarGroup.tsrx.js +84 -0
  8. package/dist/native/Badge.tsrx.js +29 -0
  9. package/dist/native/Banner.tsrx.js +80 -0
  10. package/dist/native/Breadcrumb.tsrx.js +66 -0
  11. package/dist/native/Button.tsrx.js +62 -0
  12. package/dist/native/Card.tsrx.js +64 -0
  13. package/dist/native/Checkbox.tsrx.js +58 -0
  14. package/dist/native/CheckboxGroup.tsrx.js +70 -0
  15. package/dist/native/Chip.tsrx.js +83 -0
  16. package/dist/native/Collapsible.tsrx.js +74 -0
  17. package/dist/native/CommandPalette.tsrx.js +143 -0
  18. package/dist/native/ContextMenu.tsrx.js +140 -0
  19. package/dist/native/Drawer.tsrx.js +60 -0
  20. package/dist/native/DropdownMenu.tsrx.js +155 -0
  21. package/dist/native/Empty.tsrx.js +82 -0
  22. package/dist/native/FieldGroup.tsrx.js +39 -0
  23. package/dist/native/FormField.tsrx.js +53 -0
  24. package/dist/native/{ui8.js → Grid.tsrx.js} +20 -9
  25. package/dist/native/{ui59.js → Heading.tsrx.js} +4 -4
  26. package/dist/native/Hoverable.tsrx.js +139 -0
  27. package/dist/native/{ui58.js → Icon.tsrx.js} +5 -5
  28. package/dist/native/{ui29.js → Image.tsrx.js} +5 -5
  29. package/dist/native/InputNumber.tsrx.js +146 -0
  30. package/dist/native/InputRating.tsrx.js +74 -0
  31. package/dist/native/InputTags.tsrx.js +131 -0
  32. package/dist/native/Kbd.tsrx.js +29 -0
  33. package/dist/native/{ui50.js → KeyboardAvoiding.mobile.tsrx.js} +6 -4
  34. package/dist/native/{ui17.js → Link.tsrx.js} +2 -2
  35. package/dist/native/ListItem.tsrx.js +178 -0
  36. package/dist/native/Meter.tsrx.js +70 -0
  37. package/dist/native/{ui22.js → NavLink.tsrx.js} +4 -4
  38. package/dist/native/NavigationMenu.tsrx.js +67 -0
  39. package/dist/native/{ui35.js → Overlay.tsrx.js} +4 -4
  40. package/dist/native/Pagination.tsrx.js +107 -0
  41. package/dist/native/PinInput.tsrx.js +94 -0
  42. package/dist/native/{ui38.js → Popover.tsrx.js} +7 -7
  43. package/dist/native/{ui16.js → Pressable.tsrx.js} +21 -15
  44. package/dist/native/ProgressGroup.tsrx.js +66 -0
  45. package/dist/native/RadioGroup.tsrx.js +85 -0
  46. package/dist/native/{ui15.js → RichText.tsrx.js} +16 -23
  47. package/dist/native/{ui20.js → RouteHost.mobile.tsrx.js} +13 -2
  48. package/dist/native/Row.tsrx.js +98 -0
  49. package/dist/native/{ui49.js → SafeArea.tsrx.js} +10 -4
  50. package/dist/native/{ui45.js → Screen.tsrx.js} +14 -6
  51. package/dist/native/{ui26.js → ScrollBox.tsrx.js} +2 -2
  52. package/dist/native/ScrollView.tsrx.js +233 -0
  53. package/dist/native/SearchInput.tsrx.js +151 -0
  54. package/dist/native/SegmentedControl.tsrx.js +75 -0
  55. package/dist/native/Select.tsrx.js +202 -0
  56. package/dist/native/Separator.tsrx.js +25 -0
  57. package/dist/native/{ui63.js → Sheet.tsrx.js} +24 -8
  58. package/dist/native/Skeleton.tsrx.js +28 -0
  59. package/dist/native/Slider.tsrx.js +98 -0
  60. package/dist/native/{ui13.js → Spacer.tsrx.js} +3 -3
  61. package/dist/native/Stack.tsrx.js +47 -0
  62. package/dist/native/Stepper.tsrx.js +75 -0
  63. package/dist/native/Switch.tsrx.js +33 -0
  64. package/dist/native/Table.tsrx.js +103 -0
  65. package/dist/native/Tabs.tsrx.js +153 -0
  66. package/dist/native/{ui14.js → Text.tsrx.js} +5 -4
  67. package/dist/native/{ui24.js → TextArea.tsrx.js} +18 -17
  68. package/dist/native/{ui23.js → TextInput.tsrx.js} +22 -17
  69. package/dist/native/Timeline.tsrx.js +112 -0
  70. package/dist/native/Tooltip.tsrx.js +131 -0
  71. package/dist/native/Tree.tsrx.js +140 -0
  72. package/dist/native/User.tsrx.js +95 -0
  73. package/dist/native/View.tsrx.js +98 -0
  74. package/dist/native/VirtualList.tsrx.js +466 -0
  75. package/dist/native/WebView.tsrx.js +135 -0
  76. package/dist/native/aliases.tsrx.js +38 -0
  77. package/dist/native/android/BottomNavigationView.android.tsrx.js +220 -0
  78. package/dist/native/android/CircularProgressIndicator.android.tsrx.js +27 -0
  79. package/dist/native/{ui51.js → android/DrawerLayout.android.tsrx.js} +6 -7
  80. package/dist/native/android/MaterialDialog.android.tsrx.js +62 -0
  81. package/dist/native/android/MaterialSwitch.android.tsrx.js +28 -0
  82. package/dist/native/android/RecyclerView.android.tsrx.js +260 -0
  83. package/dist/native/android/SeekBar.android.tsrx.js +34 -0
  84. package/dist/native/android/icon.android.js +7 -0
  85. package/dist/native/android/index.js +11 -0
  86. package/dist/native/android/openModal.android.js +39 -0
  87. package/dist/native/{ui41.js → anim.tsrx.js} +1 -1
  88. package/dist/native/apply-native-modifiers.native.js +9 -0
  89. package/dist/native/child-array.js +15 -0
  90. package/dist/native/{ui3.js → escape-props.js} +3 -1
  91. package/dist/native/icons.js +25 -0
  92. package/dist/native/index.shared.js +92 -0
  93. package/dist/native/{ui11.js → ios/LiquidGlass.ios.tsrx.js} +4 -4
  94. package/dist/native/{ui12.js → ios/LiquidGlassContainer.ios.tsrx.js} +4 -4
  95. package/dist/native/ios/SideDrawer.ios.tsrx.js +65 -0
  96. package/dist/native/{ui53.js → ios/UIActivityIndicatorView.ios.tsrx.js} +5 -5
  97. package/dist/native/{ui32.js → ios/UIModal.ios.tsrx.js} +10 -6
  98. package/dist/native/{ui56.js → ios/UISlider.ios.tsrx.js} +5 -5
  99. package/dist/native/{ui47.js → ios/UISwitch.ios.tsrx.js} +5 -5
  100. package/dist/native/ios/UITabBar.ios.tsrx.js +187 -0
  101. package/dist/native/ios/UITableView.ios.tsrx.js +282 -0
  102. package/dist/native/ios/icon.ios.js +7 -0
  103. package/dist/native/ios/index.js +13 -0
  104. package/dist/native/{ui33.js → ios/openModal.ios.js} +5 -4
  105. package/dist/native/keyboard-inset.mobile.js +66 -0
  106. package/dist/native/{ui5.js → layout-child.js} +1 -1
  107. package/dist/native/modal-presenter.mobile.js +19 -0
  108. package/dist/native/modifier-factories.js +24 -0
  109. package/dist/native/native/index.js +4 -0
  110. package/dist/native/octane-client-build.json +1 -1
  111. package/dist/native/{ui6.js → pan.tsrx.js} +9 -69
  112. package/dist/native/platform.js +10 -0
  113. package/dist/native/{ui36.js → platformProps.js} +3 -1
  114. package/dist/native/refresh-metrics.js +9 -0
  115. package/dist/native/refresh.js +177 -0
  116. package/dist/native/{ui34.js → root-layout.mobile.js} +8 -3
  117. package/dist/native/route-host.mobile.js +2 -0
  118. package/dist/native/{ui19.js → route-table.js} +105 -4
  119. package/dist/native/{ui21.js → route.js} +140 -20
  120. package/dist/native/safeAreaInsets.tsrx.js +67 -0
  121. package/dist/native/shared.js +93 -0
  122. package/dist/native/sheet-detents.js +102 -0
  123. package/dist/native/{ui64.js → sheet-service.js} +26 -10
  124. package/dist/native/sheet-snap.js +35 -0
  125. package/dist/native/{ui18.js → stacks.js} +1 -1
  126. package/dist/native/{ui43.js → styled.tsrx.js} +1 -1
  127. package/dist/native/{ui28.js → svg.mobile.js} +2 -2
  128. package/dist/native/tap-to-blur.mobile.js +94 -0
  129. package/dist/native/text-write.js +27 -0
  130. package/dist/native/{ui30.js → theme/colorScheme.js} +2 -2
  131. package/dist/native/{ui42.js → theme/status-bar-scheme.mobile.js} +3 -3
  132. package/dist/{web/ui29.js → native/theme/theme-scheme.js} +3 -3
  133. package/dist/native/{ui40.js → toast-anchor.tsrx.js} +4 -4
  134. package/dist/native/translate.js +11 -0
  135. package/dist/native/ui.js +95 -55
  136. package/dist/native/use-back.tsrx.js +9 -0
  137. package/dist/native/{ui62.js → use-store.tsrx.js} +1 -1
  138. package/dist/native/{ui52.js → useMeasure.tsrx.js} +2 -2
  139. package/dist/native/vendor/ui-svg/index.android.js +137 -0
  140. package/dist/native/vendor/ui-svg/index.common.js +10 -0
  141. package/dist/native/vendor/ui-svg/index.ios.js +111 -0
  142. package/dist/native/virtual-list-layout.js +146 -0
  143. package/dist/native/{ui44.js → windows.js} +1 -1
  144. package/dist/web/Absolute.web.tsrx.js +47 -0
  145. package/dist/web/Accordion.web.tsrx.js +85 -0
  146. package/dist/web/{ui48.js → ActivityIndicator.web.tsrx.js} +1 -1
  147. package/dist/web/Alert.web.tsrx.js +79 -0
  148. package/dist/web/Avatar.web.tsrx.js +106 -0
  149. package/dist/web/AvatarGroup.web.tsrx.js +108 -0
  150. package/dist/web/Badge.web.tsrx.js +37 -0
  151. package/dist/web/Banner.web.tsrx.js +79 -0
  152. package/dist/web/Breadcrumb.web.tsrx.js +135 -0
  153. package/dist/web/Button.web.tsrx.js +45 -0
  154. package/dist/web/Card.web.tsrx.js +73 -0
  155. package/dist/web/Checkbox.web.tsrx.js +89 -0
  156. package/dist/web/CheckboxGroup.web.tsrx.js +79 -0
  157. package/dist/web/Chip.web.tsrx.js +64 -0
  158. package/dist/web/Collapsible.web.tsrx.js +94 -0
  159. package/dist/web/CommandPalette.web.tsrx.js +125 -0
  160. package/dist/web/ContextMenu.web.tsrx.js +154 -0
  161. package/dist/web/{ui45.js → Drawer.web.tsrx.js} +13 -9
  162. package/dist/web/DropdownMenu.web.tsrx.js +162 -0
  163. package/dist/web/Empty.web.tsrx.js +89 -0
  164. package/dist/web/FieldGroup.web.tsrx.js +57 -0
  165. package/dist/web/FormField.web.tsrx.js +92 -0
  166. package/dist/web/Grid.web.tsrx.js +65 -0
  167. package/dist/web/{ui54.js → Heading.web.tsrx.js} +2 -2
  168. package/dist/web/{ui34.js → Hoverable.web.tsrx.js} +6 -5
  169. package/dist/web/{ui53.js → Icon.web.tsrx.js} +2 -2
  170. package/dist/web/{ui25.js → Image.web.tsrx.js} +2 -2
  171. package/dist/web/InputNumber.web.tsrx.js +99 -0
  172. package/dist/web/InputRating.web.tsrx.js +72 -0
  173. package/dist/web/InputTags.web.tsrx.js +122 -0
  174. package/dist/web/Kbd.web.tsrx.js +37 -0
  175. package/dist/web/ListItem.web.tsrx.js +139 -0
  176. package/dist/web/{ui50.js → Meter.web.tsrx.js} +1 -1
  177. package/dist/web/{ui19.js → NavLink.web.tsrx.js} +1 -1
  178. package/dist/web/NavigationMenu.web.tsrx.js +118 -0
  179. package/dist/web/{ui31.js → Overlay.web.tsrx.js} +2 -2
  180. package/dist/web/Pagination.web.tsrx.js +80 -0
  181. package/dist/web/PinInput.web.tsrx.js +72 -0
  182. package/dist/web/{ui33.js → Popover.web.tsrx.js} +3 -3
  183. package/dist/web/{ui15.js → Pressable.web.tsrx.js} +68 -95
  184. package/dist/web/ProgressGroup.web.tsrx.js +109 -0
  185. package/dist/web/RadioGroup.web.tsrx.js +69 -0
  186. package/dist/web/{ui14.js → RichText.web.tsrx.js} +2 -2
  187. package/dist/web/Row.web.tsrx.js +250 -0
  188. package/dist/web/{ui43.js → SafeArea.web.tsrx.js} +10 -4
  189. package/dist/web/{ui39.js → Screen.web.tsrx.js} +1 -1
  190. package/dist/web/{ui24.js → ScrollBox.web.tsrx.js} +1 -1
  191. package/dist/web/ScrollView.web.tsrx.js +388 -0
  192. package/dist/web/SearchInput.web.tsrx.js +137 -0
  193. package/dist/web/SegmentedControl.web.tsrx.js +75 -0
  194. package/dist/web/Select.web.tsrx.js +149 -0
  195. package/dist/web/Separator.web.tsrx.js +42 -0
  196. package/dist/web/Sheet.web.tsrx.js +81 -0
  197. package/dist/web/Skeleton.web.tsrx.js +56 -0
  198. package/dist/web/Slider.web.tsrx.js +97 -0
  199. package/dist/web/{ui12.js → Spacer.web.tsrx.js} +1 -1
  200. package/dist/web/Stack.web.tsrx.js +47 -0
  201. package/dist/web/Stepper.web.tsrx.js +65 -0
  202. package/dist/web/Switch.web.tsrx.js +59 -0
  203. package/dist/web/Table.web.tsrx.js +161 -0
  204. package/dist/web/Tabs.web.tsrx.js +215 -0
  205. package/dist/web/{ui13.js → Text.web.tsrx.js} +18 -50
  206. package/dist/web/{ui21.js → TextArea.web.tsrx.js} +4 -4
  207. package/dist/web/{ui20.js → TextInput.web.tsrx.js} +8 -8
  208. package/dist/web/Timeline.web.tsrx.js +172 -0
  209. package/dist/web/Tooltip.web.tsrx.js +184 -0
  210. package/dist/web/Tree.web.tsrx.js +146 -0
  211. package/dist/web/User.web.tsrx.js +116 -0
  212. package/dist/web/View.web.tsrx.js +250 -0
  213. package/dist/web/VirtualList.web.tsrx.js +622 -0
  214. package/dist/web/WebView.web.tsrx.js +272 -0
  215. package/dist/web/aliases.web.tsrx.js +24 -0
  216. package/dist/web/{ui36.js → anim.web.tsrx.js} +3 -35
  217. package/dist/web/child-array.js +15 -0
  218. package/dist/web/icons.js +25 -0
  219. package/dist/web/index.shared.web.js +92 -0
  220. package/dist/web/octane-client-build.json +1 -1
  221. package/dist/web/pan.web.tsrx.js +66 -0
  222. package/dist/web/platform.web.js +9 -0
  223. package/dist/web/refresh-metrics.js +9 -0
  224. package/dist/web/refresh.web.js +133 -0
  225. package/dist/web/{ui17.js → route-table.js} +105 -4
  226. package/dist/web/{ui18.js → route.web.js} +48 -11
  227. package/dist/web/sheet-detents.web.js +103 -0
  228. package/dist/web/{ui60.js → sheet-service.web.js} +5 -1
  229. package/dist/web/sheet-snap.js +35 -0
  230. package/dist/{native/ui31.js → web/theme/theme-scheme.js} +2 -2
  231. package/dist/web/{ui35.js → toast-anchor.web.tsrx.js} +3 -3
  232. package/dist/web/transform.web.js +43 -0
  233. package/dist/web/translate.web.js +13 -0
  234. package/dist/web/ui.js +93 -53
  235. package/dist/web/use-back.web.tsrx.js +9 -0
  236. package/dist/web/virtual-list-layout.js +146 -0
  237. package/dist/web/web/index.js +3 -0
  238. package/package.json +53 -14
  239. package/platforms/android/include.gradle +8 -0
  240. package/platforms/android/native-api-usage.json +8 -0
  241. package/platforms/ios/Podfile +2 -0
  242. package/src/Absolute.tsrx +22 -0
  243. package/src/Absolute.web.tsrx +22 -0
  244. package/src/Accordion.macos.tsrx +50 -0
  245. package/src/Accordion.tsrx +50 -0
  246. package/src/Accordion.web.tsrx +43 -0
  247. package/src/ActivityIndicator.tsrx +29 -0
  248. package/src/ActivityIndicator.web.tsrx +14 -0
  249. package/src/Alert.macos.tsrx +42 -0
  250. package/src/Alert.tsrx +24 -0
  251. package/src/Alert.web.tsrx +23 -0
  252. package/src/Avatar.macos.tsrx +25 -0
  253. package/src/Avatar.tsrx +25 -0
  254. package/src/Avatar.web.tsrx +24 -0
  255. package/src/AvatarGroup.macos.tsrx +32 -0
  256. package/src/AvatarGroup.tsrx +32 -0
  257. package/src/AvatarGroup.web.tsrx +29 -0
  258. package/src/Badge.macos.tsrx +12 -0
  259. package/src/Badge.tsrx +12 -0
  260. package/src/Badge.web.tsrx +10 -0
  261. package/src/Banner.macos.tsrx +20 -0
  262. package/src/Banner.tsrx +20 -0
  263. package/src/Banner.web.tsrx +20 -0
  264. package/src/Breadcrumb.macos.tsrx +27 -0
  265. package/src/Breadcrumb.tsrx +27 -0
  266. package/src/Breadcrumb.web.tsrx +25 -0
  267. package/src/Button.tsrx +23 -0
  268. package/src/Button.web.tsrx +21 -0
  269. package/src/CameraView.macos.tsrx +6 -0
  270. package/src/Card.macos.tsrx +13 -0
  271. package/src/Card.tsrx +13 -0
  272. package/src/Card.web.tsrx +11 -0
  273. package/src/Checkbox.tsrx +23 -0
  274. package/src/Checkbox.web.tsrx +34 -0
  275. package/src/CheckboxGroup.macos.tsrx +39 -0
  276. package/src/CheckboxGroup.tsrx +39 -0
  277. package/src/CheckboxGroup.web.tsrx +38 -0
  278. package/src/Chip.macos.tsrx +25 -0
  279. package/src/Chip.tsrx +25 -0
  280. package/src/Chip.web.tsrx +25 -0
  281. package/src/Collapsible.macos.tsrx +39 -0
  282. package/src/Collapsible.tsrx +39 -0
  283. package/src/Collapsible.web.tsrx +33 -0
  284. package/src/CommandPalette.macos.tsrx +58 -0
  285. package/src/CommandPalette.tsrx +58 -0
  286. package/src/CommandPalette.web.tsrx +59 -0
  287. package/src/ContextMenu.macos.tsrx +59 -0
  288. package/src/ContextMenu.tsrx +59 -0
  289. package/src/ContextMenu.web.tsrx +69 -0
  290. package/src/Drawer.macos.tsrx +28 -0
  291. package/src/Drawer.tsrx +25 -0
  292. package/src/Drawer.web.tsrx +31 -0
  293. package/src/DropdownMenu.macos.tsrx +63 -0
  294. package/src/DropdownMenu.tsrx +63 -0
  295. package/src/DropdownMenu.web.tsrx +78 -0
  296. package/src/Empty.macos.tsrx +15 -0
  297. package/src/Empty.tsrx +15 -0
  298. package/src/Empty.web.tsrx +13 -0
  299. package/src/FieldGroup.macos.tsrx +17 -0
  300. package/src/FieldGroup.tsrx +17 -0
  301. package/src/FieldGroup.web.tsrx +17 -0
  302. package/src/FormField.macos.tsrx +25 -0
  303. package/src/FormField.tsrx +25 -0
  304. package/src/FormField.web.tsrx +24 -0
  305. package/src/Grid.tsrx +32 -0
  306. package/src/Grid.web.tsrx +43 -0
  307. package/src/Heading.macos.tsrx +8 -0
  308. package/src/Heading.tsrx +17 -0
  309. package/src/Heading.web.tsrx +15 -0
  310. package/src/Hoverable.mobile.tsrx +21 -0
  311. package/src/Hoverable.tsrx +113 -0
  312. package/src/Hoverable.web.tsrx +98 -0
  313. package/src/Icon.macos.tsrx +18 -0
  314. package/src/Icon.tsrx +65 -0
  315. package/src/Icon.web.tsrx +75 -0
  316. package/src/Image.macos.tsrx +12 -0
  317. package/src/Image.tsrx +51 -0
  318. package/src/Image.web.tsrx +14 -0
  319. package/src/InputNumber.macos.tsrx +49 -0
  320. package/src/InputNumber.tsrx +49 -0
  321. package/src/InputNumber.web.tsrx +47 -0
  322. package/src/InputRating.macos.tsrx +42 -0
  323. package/src/InputRating.tsrx +39 -0
  324. package/src/InputRating.web.tsrx +52 -0
  325. package/src/InputTags.macos.tsrx +49 -0
  326. package/src/InputTags.tsrx +49 -0
  327. package/src/InputTags.web.tsrx +49 -0
  328. package/src/Kbd.macos.tsrx +11 -0
  329. package/src/Kbd.tsrx +11 -0
  330. package/src/Kbd.web.tsrx +9 -0
  331. package/src/KeyboardAvoiding.macos.tsrx +8 -0
  332. package/src/KeyboardAvoiding.mobile.tsrx +63 -0
  333. package/src/Link.macos.tsrx +15 -0
  334. package/src/Link.tsrx +10 -0
  335. package/src/Link.web.tsrx +12 -0
  336. package/src/ListItem.macos.tsrx +52 -0
  337. package/src/ListItem.tsrx +52 -0
  338. package/src/ListItem.web.tsrx +50 -0
  339. package/src/Meter.macos.tsrx +8 -0
  340. package/src/Meter.tsrx +45 -0
  341. package/src/Meter.web.tsrx +32 -0
  342. package/src/NavLink.macos.tsrx +24 -0
  343. package/src/NavLink.tsrx +22 -0
  344. package/src/NavLink.web.tsrx +23 -0
  345. package/src/NavigationMenu.macos.tsrx +31 -0
  346. package/src/NavigationMenu.tsrx +28 -0
  347. package/src/NavigationMenu.web.tsrx +31 -0
  348. package/src/Overlay.macos.tsrx +11 -0
  349. package/src/Overlay.tsrx +84 -0
  350. package/src/Overlay.web.tsrx +23 -0
  351. package/src/Pagination.macos.tsrx +54 -0
  352. package/src/Pagination.tsrx +47 -0
  353. package/src/Pagination.web.tsrx +50 -0
  354. package/src/PinInput.macos.tsrx +46 -0
  355. package/src/PinInput.tsrx +46 -0
  356. package/src/PinInput.web.tsrx +45 -0
  357. package/src/Popover.macos.tsrx +11 -0
  358. package/src/Popover.tsrx +157 -0
  359. package/src/Popover.web.tsrx +109 -0
  360. package/src/Pressable.macos.tsrx +19 -0
  361. package/src/Pressable.tsrx +37 -0
  362. package/src/Pressable.web.tsrx +45 -0
  363. package/src/ProgressGroup.macos.tsrx +17 -0
  364. package/src/ProgressGroup.tsrx +17 -0
  365. package/src/ProgressGroup.web.tsrx +15 -0
  366. package/src/RadioGroup.macos.tsrx +50 -0
  367. package/src/RadioGroup.tsrx +34 -0
  368. package/src/RadioGroup.web.tsrx +43 -0
  369. package/src/RichText.tsrx +40 -0
  370. package/src/RichText.web.tsrx +24 -0
  371. package/src/RouteHost.macos.tsrx +18 -0
  372. package/src/RouteHost.mobile.tsrx +44 -0
  373. package/src/Row.macos.tsrx +26 -0
  374. package/src/Row.tsrx +27 -0
  375. package/src/Row.web.tsrx +27 -0
  376. package/src/SafeArea.macos.tsrx +8 -0
  377. package/src/SafeArea.tsrx +20 -0
  378. package/src/SafeArea.web.tsrx +24 -0
  379. package/src/Screen.macos.tsrx +14 -0
  380. package/src/Screen.tsrx +31 -0
  381. package/src/Screen.web.tsrx +7 -0
  382. package/src/ScrollBox.tsrx +8 -0
  383. package/src/ScrollBox.web.tsrx +7 -0
  384. package/src/ScrollView.macos.tsrx +19 -0
  385. package/src/ScrollView.tsrx +117 -0
  386. package/src/ScrollView.web.tsrx +109 -0
  387. package/src/SearchInput.tsrx +60 -0
  388. package/src/SearchInput.web.test.tsrx +58 -0
  389. package/src/SearchInput.web.tsrx +55 -0
  390. package/src/SegmentedControl.tsrx +43 -0
  391. package/src/SegmentedControl.web.test.tsrx +46 -0
  392. package/src/SegmentedControl.web.tsrx +51 -0
  393. package/src/Select.macos.tsrx +104 -0
  394. package/src/Select.tsrx +104 -0
  395. package/src/Select.web.tsrx +124 -0
  396. package/src/Separator.macos.tsrx +17 -0
  397. package/src/Separator.tsrx +17 -0
  398. package/src/Separator.web.tsrx +17 -0
  399. package/src/Sheet.macos.tsrx +15 -0
  400. package/src/Sheet.tsrx +122 -0
  401. package/src/Sheet.web.tsrx +56 -0
  402. package/src/Skeleton.macos.tsrx +15 -0
  403. package/src/Skeleton.tsrx +15 -0
  404. package/src/Skeleton.web.tsrx +15 -0
  405. package/src/Slider.tsrx +71 -0
  406. package/src/Slider.web.tsrx +60 -0
  407. package/src/Spacer.tsrx +8 -0
  408. package/src/Spacer.web.tsrx +6 -0
  409. package/src/Stack.tsrx +24 -0
  410. package/src/Stack.web.tsrx +22 -0
  411. package/src/Stepper.macos.tsrx +52 -0
  412. package/src/Stepper.tsrx +31 -0
  413. package/src/Stepper.web.tsrx +37 -0
  414. package/src/Switch.tsrx +21 -0
  415. package/src/Switch.web.tsrx +28 -0
  416. package/src/Table.macos.tsrx +37 -0
  417. package/src/Table.tsrx +37 -0
  418. package/src/Table.web.tsrx +37 -0
  419. package/src/Tabs.macos.tsrx +60 -0
  420. package/src/Tabs.tsrx +55 -0
  421. package/src/Tabs.web.tsrx +98 -0
  422. package/src/Text.macos.tsrx +18 -0
  423. package/src/Text.tsrx +62 -0
  424. package/src/Text.web.tsrx +31 -0
  425. package/src/TextArea.tsrx +65 -0
  426. package/src/TextArea.web.tsrx +61 -0
  427. package/src/TextInput.tsrx +39 -0
  428. package/src/TextInput.web.tsrx +28 -0
  429. package/src/Timeline.macos.tsrx +27 -0
  430. package/src/Timeline.tsrx +24 -0
  431. package/src/Timeline.web.tsrx +22 -0
  432. package/src/Tooltip.mobile.tsrx +20 -0
  433. package/src/Tooltip.tsrx +102 -0
  434. package/src/Tooltip.web.tsrx +156 -0
  435. package/src/Tree.macos.tsrx +45 -0
  436. package/src/Tree.tsrx +45 -0
  437. package/src/Tree.web.tsrx +52 -0
  438. package/src/User.macos.tsrx +24 -0
  439. package/src/User.tsrx +24 -0
  440. package/src/User.web.tsrx +24 -0
  441. package/src/View.macos.tsrx +29 -0
  442. package/src/View.tsrx +32 -0
  443. package/src/View.web.tsrx +33 -0
  444. package/src/VirtualList.macos.tsrx +298 -0
  445. package/src/VirtualList.tsrx +358 -0
  446. package/src/VirtualList.web.tsrx +313 -0
  447. package/src/WebView.macos.tsrx +6 -0
  448. package/src/WebView.tsrx +89 -0
  449. package/src/WebView.web.tsrx +92 -0
  450. package/src/aliases.macos.tsrx +18 -0
  451. package/src/aliases.tsrx +18 -0
  452. package/src/aliases.web.tsrx +17 -0
  453. package/src/android/BottomNavigationView.android.tsrx +170 -0
  454. package/src/android/CircularProgressIndicator.android.tsrx +19 -0
  455. package/src/android/DrawerLayout.android.tsrx +48 -0
  456. package/src/android/MaterialDialog.android.tsrx +62 -0
  457. package/src/android/MaterialSwitch.android.tsrx +18 -0
  458. package/src/android/RecyclerView.android.tsrx +173 -0
  459. package/src/android/SeekBar.android.tsrx +20 -0
  460. package/src/android/icon.android.ts +8 -0
  461. package/src/android/index.ts +37 -0
  462. package/src/android/openModal.android.ts +55 -0
  463. package/src/anim.macos.tsrx +20 -0
  464. package/src/anim.tsrx +65 -0
  465. package/src/anim.web.tsrx +55 -0
  466. package/src/apply-native-modifiers.native.ts +13 -0
  467. package/src/camera-permission.web.ts +11 -0
  468. package/src/child-array.ts +16 -0
  469. package/src/colorScheme.macos.ts +27 -0
  470. package/src/controls.macos.tsrx +171 -0
  471. package/src/cx.ts +8 -0
  472. package/src/escape-props.macos.ts +11 -0
  473. package/src/escape-props.ts +70 -0
  474. package/src/escape-props.web.ts +25 -0
  475. package/src/hosted-unsupported.macos.tsrx +9 -0
  476. package/src/icons.ts +60 -0
  477. package/src/index.linux.ts +10 -0
  478. package/src/index.macos.ts +106 -0
  479. package/src/index.mobile.ts +6 -0
  480. package/src/index.shared.ts +269 -0
  481. package/src/index.shared.web.ts +270 -0
  482. package/src/index.ts +1 -0
  483. package/src/index.web.ts +1 -0
  484. package/src/ios/LiquidGlass.ios.tsrx +41 -0
  485. package/src/ios/LiquidGlassContainer.ios.tsrx +34 -0
  486. package/src/ios/SideDrawer.ios.tsrx +49 -0
  487. package/src/ios/UIActivityIndicatorView.ios.tsrx +18 -0
  488. package/src/ios/UIModal.ios.tsrx +68 -0
  489. package/src/ios/UISlider.ios.tsrx +20 -0
  490. package/src/ios/UISwitch.ios.tsrx +18 -0
  491. package/src/ios/UITabBar.ios.tsrx +172 -0
  492. package/src/ios/UITableView.ios.tsrx +186 -0
  493. package/src/ios/icon.ios.ts +8 -0
  494. package/src/ios/index.ts +42 -0
  495. package/src/ios/openModal.ios.ts +55 -0
  496. package/src/keyboard-inset.mobile.ts +89 -0
  497. package/src/layout-child.ts +57 -0
  498. package/src/layout-child.web.ts +108 -0
  499. package/src/layout-shells.macos.tsrx +10 -0
  500. package/src/layout.macos.tsrx +41 -0
  501. package/src/macos-extras.macos.tsrx +40 -0
  502. package/src/meter-math.ts +6 -0
  503. package/src/modal-presenter.mobile.ts +24 -0
  504. package/src/modifier-factories.ts +20 -0
  505. package/src/native/index.ts +6 -0
  506. package/src/pan.tsrx +64 -0
  507. package/src/pan.web.tsrx +38 -0
  508. package/src/platform.macos.ts +1 -0
  509. package/src/platform.ts +7 -0
  510. package/src/platform.web.ts +6 -0
  511. package/src/platformProps.ts +23 -0
  512. package/src/platformProps.web.ts +14 -0
  513. package/src/popover-position.ts +62 -0
  514. package/src/popover.mobile.test.ts +54 -0
  515. package/src/props.ts +1812 -0
  516. package/src/references.d.ts +2 -0
  517. package/src/refresh-metrics.ts +11 -0
  518. package/src/refresh.ts +271 -0
  519. package/src/refresh.web.test.ts +111 -0
  520. package/src/refresh.web.ts +205 -0
  521. package/src/root-layout.mobile.ts +89 -0
  522. package/src/route-host.mobile.ts +1 -0
  523. package/src/route-table.test.ts +345 -0
  524. package/src/route-table.ts +585 -0
  525. package/src/route.macos.ts +201 -0
  526. package/src/route.ts +703 -0
  527. package/src/route.web.ts +366 -0
  528. package/src/safeAreaInsets.macos.tsrx +7 -0
  529. package/src/safeAreaInsets.tsrx +60 -0
  530. package/src/safeAreaInsets.web.tsrx +38 -0
  531. package/src/sheet-detents.ts +142 -0
  532. package/src/sheet-detents.web.ts +147 -0
  533. package/src/sheet-service.macos.ts +60 -0
  534. package/src/sheet-service.ts +124 -0
  535. package/src/sheet-service.web.ts +64 -0
  536. package/src/sheet-snap.test.ts +46 -0
  537. package/src/sheet-snap.ts +66 -0
  538. package/src/stacks.macos.ts +13 -0
  539. package/src/stacks.ts +44 -0
  540. package/src/stacks.web.ts +9 -0
  541. package/src/store.mobile.test.ts +149 -0
  542. package/src/store.ts +39 -0
  543. package/src/store.web.test.tsrx +58 -0
  544. package/src/styled.macos.tsrx +23 -0
  545. package/src/styled.test.ts +40 -0
  546. package/src/styled.tsrx +36 -0
  547. package/src/styled.web.tsrx +23 -0
  548. package/src/surfaces.macos.tsrx +27 -0
  549. package/src/svg.mobile.ts +76 -0
  550. package/src/tap-to-blur.mobile.ts +108 -0
  551. package/src/text-controls.macos.tsrx +11 -0
  552. package/src/text-write.ts +28 -0
  553. package/src/text-write.web.ts +13 -0
  554. package/src/theme/colorScheme.linux.ts +52 -0
  555. package/src/theme/colorScheme.ts +26 -0
  556. package/src/theme/colorScheme.web.ts +20 -0
  557. package/src/theme/status-bar-scheme.mobile.ts +39 -0
  558. package/src/theme/theme-scheme.macos.ts +50 -0
  559. package/src/theme/theme-scheme.ts +66 -0
  560. package/src/theme/tokens.css +1408 -206
  561. package/src/toast-anchor.macos.tsrx +3 -0
  562. package/src/toast-anchor.tsrx +122 -0
  563. package/src/toast-anchor.web.tsrx +92 -0
  564. package/src/toast.tsrx +90 -0
  565. package/src/toast.web.tsrx +50 -0
  566. package/src/transform.web.ts +52 -0
  567. package/src/translate.macos.ts +5 -0
  568. package/src/translate.ts +13 -0
  569. package/src/translate.web.ts +15 -0
  570. package/src/tsconfig.json +8 -0
  571. package/src/unsupported.macos.tsrx +5 -0
  572. package/src/use-back.tsrx +11 -0
  573. package/src/use-back.web.tsrx +12 -0
  574. package/src/use-store.tsrx +18 -0
  575. package/src/use-store.web.tsrx +18 -0
  576. package/src/useMeasure.macos.tsrx +23 -0
  577. package/src/useMeasure.tsrx +66 -0
  578. package/src/useMeasure.web.tsrx +39 -0
  579. package/src/useStore.macos.tsrx +6 -0
  580. package/src/vendor/ui-svg/LICENSE +201 -0
  581. package/src/vendor/ui-svg/index.android.ts +189 -0
  582. package/src/vendor/ui-svg/index.common.ts +19 -0
  583. package/src/vendor/ui-svg/index.ios.ts +147 -0
  584. package/src/vendor/ui-svg/index.ts +1 -0
  585. package/src/vendor/ui-svg/typings/SVGKit.d.ts +2862 -0
  586. package/src/vendor/ui-svg/typings/android.d.ts +1483 -0
  587. package/src/vendor/ui-svg/typings/ios.d.ts +1511 -0
  588. package/src/virtual-list-layout.test.ts +81 -0
  589. package/src/virtual-list-layout.ts +246 -0
  590. package/src/web/index.ts +11 -0
  591. package/src/windows.linux.ts +59 -0
  592. package/src/windows.macos.ts +10 -0
  593. package/src/windows.ts +7 -0
  594. package/src/windows.web.ts +6 -0
  595. package/types/generated/.tsrx-typegen-manifest.json +250 -0
  596. package/types/generated/Absolute.d.ts +3 -0
  597. package/types/generated/Absolute.web.d.ts +3 -0
  598. package/types/generated/Accordion.d.ts +5 -0
  599. package/types/generated/Accordion.web.d.ts +5 -0
  600. package/types/generated/ActivityIndicator.d.ts +7 -0
  601. package/types/generated/ActivityIndicator.web.d.ts +3 -0
  602. package/types/generated/Alert.d.ts +4 -0
  603. package/types/generated/Alert.web.d.ts +5 -0
  604. package/types/generated/Avatar.d.ts +6 -0
  605. package/types/generated/Avatar.web.d.ts +7 -0
  606. package/types/generated/AvatarGroup.d.ts +6 -0
  607. package/types/generated/AvatarGroup.web.d.ts +6 -0
  608. package/types/generated/Badge.d.ts +5 -0
  609. package/types/generated/Badge.web.d.ts +5 -0
  610. package/types/generated/Banner.d.ts +4 -0
  611. package/types/generated/Banner.web.d.ts +4 -0
  612. package/types/generated/Breadcrumb.d.ts +4 -0
  613. package/types/generated/Breadcrumb.web.d.ts +5 -0
  614. package/types/generated/Button.d.ts +6 -0
  615. package/types/generated/Button.web.d.ts +6 -0
  616. package/types/generated/Card.d.ts +4 -0
  617. package/types/generated/Card.web.d.ts +4 -0
  618. package/types/generated/Checkbox.d.ts +5 -0
  619. package/types/generated/Checkbox.web.d.ts +6 -0
  620. package/types/generated/CheckboxGroup.d.ts +3 -0
  621. package/types/generated/CheckboxGroup.web.d.ts +3 -0
  622. package/types/generated/Chip.d.ts +5 -0
  623. package/types/generated/Chip.web.d.ts +5 -0
  624. package/types/generated/Collapsible.d.ts +5 -0
  625. package/types/generated/Collapsible.web.d.ts +5 -0
  626. package/types/generated/CommandPalette.d.ts +4 -0
  627. package/types/generated/CommandPalette.web.d.ts +4 -0
  628. package/types/generated/ContextMenu.d.ts +5 -0
  629. package/types/generated/ContextMenu.web.d.ts +4 -0
  630. package/types/generated/Drawer.d.ts +7 -0
  631. package/types/generated/Drawer.web.d.ts +7 -0
  632. package/types/generated/DropdownMenu.d.ts +5 -0
  633. package/types/generated/DropdownMenu.web.d.ts +5 -0
  634. package/types/generated/Empty.d.ts +4 -0
  635. package/types/generated/Empty.web.d.ts +4 -0
  636. package/types/generated/FieldGroup.d.ts +4 -0
  637. package/types/generated/FieldGroup.web.d.ts +4 -0
  638. package/types/generated/FormField.d.ts +5 -0
  639. package/types/generated/FormField.web.d.ts +5 -0
  640. package/types/generated/Grid.d.ts +3 -0
  641. package/types/generated/Grid.web.d.ts +3 -0
  642. package/types/generated/Heading.d.ts +2 -0
  643. package/types/generated/Heading.web.d.ts +2 -0
  644. package/types/generated/Hoverable.d.ts +10 -0
  645. package/types/generated/Hoverable.web.d.ts +9 -0
  646. package/types/generated/Icon.d.ts +3 -0
  647. package/types/generated/Icon.web.d.ts +3 -0
  648. package/types/generated/Image.d.ts +7 -0
  649. package/types/generated/Image.web.d.ts +3 -0
  650. package/types/generated/InputNumber.d.ts +5 -0
  651. package/types/generated/InputNumber.web.d.ts +5 -0
  652. package/types/generated/InputRating.d.ts +4 -0
  653. package/types/generated/InputRating.web.d.ts +4 -0
  654. package/types/generated/InputTags.d.ts +4 -0
  655. package/types/generated/InputTags.web.d.ts +5 -0
  656. package/types/generated/Kbd.d.ts +4 -0
  657. package/types/generated/Kbd.web.d.ts +4 -0
  658. package/types/generated/KeyboardAvoiding.mobile.d.ts +2 -0
  659. package/types/generated/Link.d.ts +2 -0
  660. package/types/generated/Link.web.d.ts +3 -0
  661. package/types/generated/ListItem.d.ts +3 -0
  662. package/types/generated/ListItem.web.d.ts +3 -0
  663. package/types/generated/Meter.d.ts +3 -0
  664. package/types/generated/Meter.web.d.ts +3 -0
  665. package/types/generated/NavLink.d.ts +3 -0
  666. package/types/generated/NavLink.web.d.ts +3 -0
  667. package/types/generated/NavigationMenu.d.ts +4 -0
  668. package/types/generated/NavigationMenu.web.d.ts +5 -0
  669. package/types/generated/Overlay.d.ts +3 -0
  670. package/types/generated/Overlay.web.d.ts +3 -0
  671. package/types/generated/Pagination.d.ts +4 -0
  672. package/types/generated/Pagination.web.d.ts +5 -0
  673. package/types/generated/PinInput.d.ts +4 -0
  674. package/types/generated/PinInput.web.d.ts +4 -0
  675. package/types/generated/Popover.d.ts +6 -0
  676. package/types/generated/Popover.web.d.ts +3 -0
  677. package/types/generated/Pressable.d.ts +6 -0
  678. package/types/generated/Pressable.web.d.ts +2 -0
  679. package/types/generated/ProgressGroup.d.ts +3 -0
  680. package/types/generated/ProgressGroup.web.d.ts +4 -0
  681. package/types/generated/RadioGroup.d.ts +5 -0
  682. package/types/generated/RadioGroup.web.d.ts +5 -0
  683. package/types/generated/RichText.d.ts +7 -0
  684. package/types/generated/RichText.web.d.ts +3 -0
  685. package/types/generated/RouteHost.mobile.d.ts +14 -0
  686. package/types/generated/Row.d.ts +2 -0
  687. package/types/generated/Row.web.d.ts +2 -0
  688. package/types/generated/SafeArea.d.ts +2 -0
  689. package/types/generated/SafeArea.web.d.ts +3 -0
  690. package/types/generated/Screen.d.ts +3 -0
  691. package/types/generated/Screen.web.d.ts +3 -0
  692. package/types/generated/ScrollBox.d.ts +3 -0
  693. package/types/generated/ScrollBox.web.d.ts +3 -0
  694. package/types/generated/ScrollView.d.ts +7 -0
  695. package/types/generated/ScrollView.web.d.ts +6 -0
  696. package/types/generated/SearchInput.d.ts +7 -0
  697. package/types/generated/SearchInput.web.d.ts +6 -0
  698. package/types/generated/SegmentedControl.d.ts +7 -0
  699. package/types/generated/SegmentedControl.web.d.ts +6 -0
  700. package/types/generated/Select.d.ts +6 -0
  701. package/types/generated/Select.web.d.ts +6 -0
  702. package/types/generated/Separator.d.ts +5 -0
  703. package/types/generated/Separator.web.d.ts +5 -0
  704. package/types/generated/Sheet.d.ts +5 -0
  705. package/types/generated/Sheet.web.d.ts +7 -0
  706. package/types/generated/Skeleton.d.ts +5 -0
  707. package/types/generated/Skeleton.web.d.ts +6 -0
  708. package/types/generated/Slider.d.ts +6 -0
  709. package/types/generated/Slider.web.d.ts +6 -0
  710. package/types/generated/Spacer.d.ts +3 -0
  711. package/types/generated/Spacer.web.d.ts +3 -0
  712. package/types/generated/Stack.d.ts +3 -0
  713. package/types/generated/Stack.web.d.ts +3 -0
  714. package/types/generated/Stepper.d.ts +4 -0
  715. package/types/generated/Stepper.web.d.ts +5 -0
  716. package/types/generated/Switch.d.ts +7 -0
  717. package/types/generated/Switch.web.d.ts +6 -0
  718. package/types/generated/Table.d.ts +4 -0
  719. package/types/generated/Table.web.d.ts +5 -0
  720. package/types/generated/Tabs.d.ts +10 -0
  721. package/types/generated/Tabs.web.d.ts +6 -0
  722. package/types/generated/Text.d.ts +2 -0
  723. package/types/generated/Text.web.d.ts +2 -0
  724. package/types/generated/TextArea.d.ts +8 -0
  725. package/types/generated/TextArea.web.d.ts +9 -0
  726. package/types/generated/TextInput.d.ts +9 -0
  727. package/types/generated/TextInput.web.d.ts +2 -0
  728. package/types/generated/Timeline.d.ts +3 -0
  729. package/types/generated/Timeline.web.d.ts +4 -0
  730. package/types/generated/Tooltip.d.ts +9 -0
  731. package/types/generated/Tooltip.web.d.ts +12 -0
  732. package/types/generated/Tree.d.ts +4 -0
  733. package/types/generated/Tree.web.d.ts +4 -0
  734. package/types/generated/User.d.ts +5 -0
  735. package/types/generated/User.web.d.ts +5 -0
  736. package/types/generated/View.d.ts +7 -0
  737. package/types/generated/View.web.d.ts +7 -0
  738. package/types/generated/VirtualList.d.ts +5 -0
  739. package/types/generated/VirtualList.web.d.ts +4 -0
  740. package/types/generated/WebView.d.ts +11 -0
  741. package/types/generated/WebView.web.d.ts +5 -0
  742. package/types/generated/aliases.d.ts +7 -0
  743. package/types/generated/aliases.web.d.ts +7 -0
  744. package/types/generated/android/BottomNavigationView.android.d.ts +9 -0
  745. package/types/generated/android/CircularProgressIndicator.android.d.ts +6 -0
  746. package/types/generated/android/DrawerLayout.android.d.ts +12 -0
  747. package/types/generated/android/MaterialDialog.android.d.ts +8 -0
  748. package/types/generated/android/MaterialSwitch.android.d.ts +6 -0
  749. package/types/generated/android/RecyclerView.android.d.ts +14 -0
  750. package/types/generated/android/SeekBar.android.d.ts +5 -0
  751. package/types/generated/android/icon.android.d.ts +5 -0
  752. package/types/generated/android/index.d.ts +12 -0
  753. package/types/generated/android/openModal.android.d.ts +4 -0
  754. package/types/generated/anim.d.ts +10 -0
  755. package/types/generated/anim.web.d.ts +3 -0
  756. package/types/generated/apply-native-modifiers.native.d.ts +3 -0
  757. package/types/generated/child-array.d.ts +3 -0
  758. package/types/generated/cx.d.ts +6 -0
  759. package/types/generated/escape-props.d.ts +16 -0
  760. package/types/generated/icons.d.ts +5 -0
  761. package/types/generated/index.d.ts +1 -0
  762. package/types/generated/index.linux.d.ts +5 -0
  763. package/types/generated/index.mobile.d.ts +4 -0
  764. package/types/generated/index.shared.d.ts +111 -0
  765. package/types/generated/index.shared.web.d.ts +111 -0
  766. package/types/generated/index.web.d.ts +1 -0
  767. package/types/generated/ios/LiquidGlass.ios.d.ts +12 -0
  768. package/types/generated/ios/LiquidGlassContainer.ios.d.ts +13 -0
  769. package/types/generated/ios/SideDrawer.ios.d.ts +12 -0
  770. package/types/generated/ios/UIActivityIndicatorView.ios.d.ts +5 -0
  771. package/types/generated/ios/UIModal.ios.d.ts +7 -0
  772. package/types/generated/ios/UISlider.ios.d.ts +5 -0
  773. package/types/generated/ios/UISwitch.ios.d.ts +6 -0
  774. package/types/generated/ios/UITabBar.ios.d.ts +7 -0
  775. package/types/generated/ios/UITableView.ios.d.ts +14 -0
  776. package/types/generated/ios/icon.ios.d.ts +5 -0
  777. package/types/generated/ios/index.d.ts +14 -0
  778. package/types/generated/ios/openModal.ios.d.ts +4 -0
  779. package/types/generated/keyboard-inset.mobile.d.ts +10 -0
  780. package/types/generated/layout-child.d.ts +6 -0
  781. package/types/generated/layout-child.web.d.ts +15 -0
  782. package/types/generated/meter-math.d.ts +6 -0
  783. package/types/generated/modal-presenter.mobile.d.ts +14 -0
  784. package/types/generated/modifier-factories.d.ts +15 -0
  785. package/types/generated/native/index.d.ts +3 -0
  786. package/types/generated/pan.d.ts +2 -0
  787. package/types/generated/pan.web.d.ts +9 -0
  788. package/types/generated/platform.d.ts +7 -0
  789. package/types/generated/platform.web.d.ts +6 -0
  790. package/types/generated/platformProps.d.ts +7 -0
  791. package/types/generated/platformProps.web.d.ts +2 -0
  792. package/types/generated/popover-position.d.ts +14 -0
  793. package/types/generated/props.d.ts +1626 -0
  794. package/types/generated/refresh-metrics.d.ts +8 -0
  795. package/types/generated/refresh.d.ts +42 -0
  796. package/types/generated/refresh.web.d.ts +23 -0
  797. package/types/generated/root-layout.mobile.d.ts +22 -0
  798. package/types/generated/route-host.mobile.d.ts +1 -0
  799. package/types/generated/route-table.d.ts +90 -0
  800. package/types/generated/route.d.ts +74 -0
  801. package/types/generated/route.web.d.ts +67 -0
  802. package/types/generated/safeAreaInsets.d.ts +8 -0
  803. package/types/generated/safeAreaInsets.web.d.ts +8 -0
  804. package/types/generated/sheet-detents.d.ts +23 -0
  805. package/types/generated/sheet-detents.web.d.ts +13 -0
  806. package/types/generated/sheet-service.d.ts +11 -0
  807. package/types/generated/sheet-service.web.d.ts +6 -0
  808. package/types/generated/sheet-snap.d.ts +18 -0
  809. package/types/generated/stacks.d.ts +9 -0
  810. package/types/generated/stacks.web.d.ts +4 -0
  811. package/types/generated/store.d.ts +14 -0
  812. package/types/generated/styled.d.ts +20 -0
  813. package/types/generated/styled.web.d.ts +10 -0
  814. package/types/generated/svg.mobile.d.ts +23 -0
  815. package/types/generated/tap-to-blur.mobile.d.ts +16 -0
  816. package/types/generated/text-write.d.ts +9 -0
  817. package/types/generated/theme/colorScheme.d.ts +6 -0
  818. package/types/generated/theme/colorScheme.linux.d.ts +5 -0
  819. package/types/generated/theme/colorScheme.web.d.ts +5 -0
  820. package/types/generated/theme/status-bar-scheme.mobile.d.ts +1 -0
  821. package/types/generated/theme/theme-scheme.d.ts +20 -0
  822. package/types/generated/toast-anchor.d.ts +4 -0
  823. package/types/generated/toast-anchor.web.d.ts +4 -0
  824. package/types/generated/transform.web.d.ts +8 -0
  825. package/types/generated/translate.d.ts +5 -0
  826. package/types/generated/translate.web.d.ts +6 -0
  827. package/types/generated/use-back.d.ts +6 -0
  828. package/types/generated/use-back.web.d.ts +7 -0
  829. package/types/generated/use-store.d.ts +9 -0
  830. package/types/generated/use-store.web.d.ts +9 -0
  831. package/types/generated/useMeasure.d.ts +3 -0
  832. package/types/generated/useMeasure.web.d.ts +3 -0
  833. package/types/generated/vendor/ui-svg/index.common.d.ts +7 -0
  834. package/types/generated/vendor/ui-svg/index.d.ts +1 -0
  835. package/types/generated/vendor/ui-svg/index.ios.d.ts +13 -0
  836. package/types/generated/virtual-list-layout.d.ts +44 -0
  837. package/types/generated/web/index.d.ts +3 -0
  838. package/types/generated/windows.d.ts +3 -0
  839. package/types/generated/windows.linux.d.ts +15 -0
  840. package/types/generated/windows.web.d.ts +3 -0
  841. package/types/index.macos.d.ts +142 -0
  842. package/dist/native/ui10.js +0 -32
  843. package/dist/native/ui25.js +0 -141
  844. package/dist/native/ui27.js +0 -61
  845. package/dist/native/ui39.js +0 -103
  846. package/dist/native/ui4.js +0 -24
  847. package/dist/native/ui46.js +0 -267
  848. package/dist/native/ui48.js +0 -35
  849. package/dist/native/ui55.js +0 -92
  850. package/dist/native/ui57.js +0 -19
  851. package/dist/native/ui60.js +0 -14
  852. package/dist/native/ui7.js +0 -52
  853. package/dist/native/ui9.js +0 -36
  854. package/dist/web/ui10.js +0 -46
  855. package/dist/web/ui11.js +0 -42
  856. package/dist/web/ui22.js +0 -108
  857. package/dist/web/ui23.js +0 -96
  858. package/dist/web/ui26.js +0 -45
  859. package/dist/web/ui3.js +0 -31
  860. package/dist/web/ui30.js +0 -34
  861. package/dist/web/ui40.js +0 -154
  862. package/dist/web/ui41.js +0 -43
  863. package/dist/web/ui44.js +0 -42
  864. package/dist/web/ui5.js +0 -168
  865. package/dist/web/ui51.js +0 -47
  866. package/dist/web/ui52.js +0 -19
  867. package/dist/web/ui55.js +0 -17
  868. package/dist/web/ui59.js +0 -44
  869. package/dist/web/ui6.js +0 -94
  870. package/dist/web/ui7.js +0 -62
  871. package/dist/web/ui8.js +0 -46
  872. package/dist/web/ui9.js +0 -46
  873. package/types/index.d.ts +0 -258
  874. package/types/props.d.ts +0 -742
  875. /package/dist/native/{ui2.js → cx.js} +0 -0
  876. /package/dist/native/{ui54.js → meter-math.js} +0 -0
  877. /package/dist/native/{ui37.js → popover-position.js} +0 -0
  878. /package/dist/native/{ui61.js → store.js} +0 -0
  879. /package/dist/web/{ui16.js → Link.web.tsrx.js} +0 -0
  880. /package/dist/web/{ui28.js → cx.js} +0 -0
  881. /package/dist/web/{ui2.js → escape-props.web.js} +0 -0
  882. /package/dist/web/{ui4.js → layout-child.web.js} +0 -0
  883. /package/dist/web/{ui49.js → meter-math.js} +0 -0
  884. /package/dist/web/{ui47.js → platformProps.web.js} +0 -0
  885. /package/dist/web/{ui32.js → popover-position.js} +0 -0
  886. /package/dist/web/{ui42.js → safeAreaInsets.web.tsrx.js} +0 -0
  887. /package/dist/web/{ui56.js → stacks.web.js} +0 -0
  888. /package/dist/web/{ui57.js → store.js} +0 -0
  889. /package/dist/web/{ui37.js → styled.web.tsrx.js} +0 -0
  890. /package/dist/web/{ui27.js → theme/colorScheme.web.js} +0 -0
  891. /package/dist/web/{ui58.js → use-store.web.tsrx.js} +0 -0
  892. /package/dist/web/{ui46.js → useMeasure.web.tsrx.js} +0 -0
  893. /package/dist/web/{ui38.js → windows.web.js} +0 -0
@@ -70,15 +70,26 @@ img {
70
70
  display: flex;
71
71
  flex-direction: column;
72
72
  }
73
- /* Native has no scroll chaining — a ScrollView/ListView just bounces
74
- inside itself because the parent is never a scroller. contain is the
75
- DOM equivalent: scroll stays in the leaf it started in. */
76
- .vx-scroll,
77
- .vx-list {
73
+ /* Native has no scroll chaining — a ScrollView just bounces inside
74
+ itself because the parent is never a scroller. contain is the DOM
75
+ equivalent: scroll stays in the leaf it started in. */
76
+ .vx-scroll {
78
77
  overscroll-behavior: contain;
79
78
  }
80
79
  /* xplat-web-only:end */
81
80
 
81
+ /* Shared normalization — NS FlexboxLayout defaults flex children to
82
+ shrink:1 with NO min-content floor (its shrink pass clamps at
83
+ effectiveMinWidth/Height = the explicit min-* prop, default 0), so an
84
+ overflowing column crushes intrinsic children toward zero where the
85
+ web stops at min-content. RN's Yoga defaults flexShrink:0 for the same
86
+ reason — do the same on both engines. `*` is zero-specificity: flex-1
87
+ (the shorthand sets shrink:1) and .shrink still opt back in, and
88
+ truncation patterns pair them with min-w-0/min-h-0. */
89
+ * {
90
+ flex-shrink: 0;
91
+ }
92
+
82
93
  /* vocabulary base styles */
83
94
 
84
95
  .vx-view,
@@ -109,8 +120,17 @@ img {
109
120
  display: flex;
110
121
  flex-direction: column;
111
122
  }
112
- /* xplat-web-only:start — the native Drawer leaf is the ui-drawer widget;
113
- these rules style the web DOM drawer overlay */
123
+ /* Self-drawn drawer — shared geometry. Native grid children overlay the
124
+ cell (panel pins left via horizontalAlignment in the leaf); DOM
125
+ positioning extras are web-only below. */
126
+ .vx-drawer-backdrop {
127
+ background-color: rgba(0, 0, 0, 0.4);
128
+ }
129
+ .vx-drawer-panel {
130
+ width: 280px;
131
+ background-color: var(--color-surface);
132
+ }
133
+ /* xplat-web-only:start */
114
134
  .vx-drawer {
115
135
  display: flex;
116
136
  flex-direction: row;
@@ -125,7 +145,6 @@ img {
125
145
  .vx-drawer-backdrop {
126
146
  position: absolute;
127
147
  inset: 0;
128
- background: rgba(0, 0, 0, 0.4);
129
148
  }
130
149
  .vx-drawer-panel {
131
150
  position: absolute;
@@ -133,9 +152,7 @@ img {
133
152
  top: 0;
134
153
  bottom: 0;
135
154
  left: 0;
136
- width: 280px;
137
155
  overflow: auto;
138
- background: var(--color-surface);
139
156
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
140
157
  }
141
158
  /* xplat-web-only:end */
@@ -167,246 +184,1377 @@ img {
167
184
  .vx-spacer {
168
185
  flex-grow: 1;
169
186
  }
170
-
171
- .vx-pressable {
172
- display: flex;
187
+
188
+ .vx-pressable {
189
+ display: flex;
190
+ flex-direction: column;
191
+ user-select: none;
192
+ }
193
+
194
+ /* web press feedback */
195
+ .vx-pressable:active {
196
+ opacity: 0.85;
197
+ }
198
+ /* native press feedback (NS pseudo — dead rule on web, and vice versa) */
199
+ .vx-pressable:pressed {
200
+ opacity: 0.85;
201
+ }
202
+
203
+ /* xplat-web-only:start — overlays/toasts/popovers render through RootLayout
204
+ or showModal on native; these portal/positioning rules are web-only */
205
+ .vx-overlay {
206
+ z-index: 1000;
207
+ }
208
+
209
+ .vx-overlay-shade {
210
+ position: absolute;
211
+ inset: 0;
212
+ background-color: rgba(0, 0, 0, 0.4);
213
+ }
214
+
215
+ .vx-overlay-content {
216
+ position: relative;
217
+ z-index: 1;
218
+ }
219
+
220
+ .vx-popover {
221
+ z-index: 1001;
222
+ }
223
+
224
+ .vx-popover-backdrop {
225
+ background-color: transparent;
226
+ }
227
+
228
+ .vx-tooltip {
229
+ padding: 4px 8px;
230
+ border-width: 1px;
231
+ border-color: var(--color-border);
232
+ border-radius: var(--radius-sm);
233
+ corner-shape: squircle;
234
+ background-color: var(--color-surface);
235
+ color: var(--color-text);
236
+ font-size: 12px;
237
+ line-height: 16px;
238
+ }
239
+
240
+ .vx-toast-host {
241
+ position: fixed;
242
+ z-index: 1002;
243
+ left: 0;
244
+ right: 0;
245
+ display: flex;
246
+ justify-content: center;
247
+ pointer-events: none;
248
+ }
249
+
250
+ .vx-toast-top {
251
+ top: 24px;
252
+ }
253
+ .vx-toast-bottom {
254
+ bottom: 24px;
255
+ }
256
+
257
+ .vx-toast {
258
+ pointer-events: auto;
259
+ }
260
+ /* xplat-web-only:end */
261
+
262
+ /* Normalized OS-widget reset — TextInput/TextArea are real
263
+ <input>/<textarea>/TextField/TextView; the leaves emit vx-input/
264
+ vx-textarea unconditionally so the platform chrome is stripped before
265
+ app styles apply. On Android the transparent background replaces the
266
+ default EditText drawable (kills the Material underline); zero padding
267
+ removes native insets. Legitimate semantics — IME, secure entry,
268
+ selection, autofill, caret, focus — stay platform-native by design. */
269
+ .vx-input,
270
+ .vx-textarea {
271
+ padding: 0;
272
+ margin: 0;
273
+ border-width: 0;
274
+ background-color: transparent;
275
+ color: var(--color-text);
276
+ font-size: 14px;
277
+ /* NS placeholder color; web uses the ::placeholder pseudo below. */
278
+ placeholder-color: var(--color-text-secondary);
279
+ }
280
+ /* xplat-web-only:start — DOM-only reset: element UA chrome and the
281
+ focus outline (normalized to the same thin ring on both). */
282
+ .vx-input,
283
+ .vx-textarea {
284
+ appearance: none;
285
+ -webkit-appearance: none;
286
+ outline: none;
287
+ }
288
+ .vx-input:focus,
289
+ .vx-textarea:focus {
290
+ outline: 1px solid var(--color-primary);
291
+ outline-offset: -1px;
292
+ }
293
+ /* xplat-web-only:end */
294
+
295
+ /* auto-grow owns height — the manual resize handle has no native analog */
296
+ /* xplat-web-only:start */
297
+ .vx-textarea {
298
+ resize: none;
299
+ }
300
+ /* xplat-web-only:end */
301
+
302
+ /* WebView chrome reset — the web leaf is a real <iframe>: strip the UA's
303
+ inset border and the inline-element baseline gap. WKWebView and
304
+ android.webkit.WebView ship chrome-free, so there is no native reset. */
305
+ /* xplat-web-only:start */
306
+ .vx-webview {
307
+ display: block;
308
+ border-width: 0;
309
+ }
310
+ /* xplat-web-only:end */
311
+
312
+ /* Video — surface-hosted leaf: the engine surface fills the frame and the
313
+ self-drawn transport layers stack on top in the same grid cell
314
+ (vx-stack). NS-side rules only — DOM resets sit in the web block. */
315
+ .vx-video {
316
+ background-color: #000;
317
+ }
318
+
319
+ .vx-video-centerbtn {
320
+ width: 56px;
321
+ height: 56px;
322
+ border-radius: 28px;
323
+ background-color: rgba(0, 0, 0, 0.55);
324
+ align-items: center;
325
+ justify-content: center;
326
+ }
327
+
328
+ .vx-video-bar {
329
+ background-color: rgba(0, 0, 0, 0.45);
330
+ padding: 4px 8px;
331
+ }
332
+
333
+ .vx-video-btn {
334
+ padding: 4px;
335
+ }
336
+
337
+ /* Full-frame tap layer — hit target only, never paints. */
338
+ .vx-video-tap {
339
+ background-color: transparent;
340
+ }
341
+
342
+ .vx-video-time {
343
+ color: #fff;
344
+ font-size: 11px;
345
+ min-width: 34px;
346
+ text-align: center;
347
+ }
348
+
349
+ /* xplat-web-only:start — the <video> element is inline and overlays would
350
+ otherwise swallow pointer events; native layers are hit-transparent by
351
+ default, so none of this exists on NS. */
352
+ .vx-video-surface {
353
+ display: block;
354
+ width: 100%;
355
+ height: 100%;
356
+ }
357
+
358
+ .vx-video-poster,
359
+ .vx-video-barwrap {
360
+ pointer-events: none;
361
+ }
362
+
363
+ .vx-video-barwrap > * {
364
+ pointer-events: auto;
365
+ }
366
+
367
+ .vx-video-poster {
368
+ object-fit: cover;
369
+ }
370
+
371
+ /* xplat-web-only:end */
372
+
373
+ /* xplat-web-only:start */
374
+ /* Modal ROUTES (pushRoute presentation:'modal') — the URL stays underneath,
375
+ so the overlay is a fixed layer over the shell rather than a dialog. */
376
+ .vx-modalroute {
377
+ position: fixed;
378
+ inset: 0;
379
+ z-index: 1000;
380
+ display: flex;
381
+ align-items: stretch;
382
+ justify-content: stretch;
383
+ }
384
+
385
+ .vx-modalroute-shade {
386
+ position: absolute;
387
+ inset: 0;
388
+ border: 0;
389
+ padding: 0;
390
+ background: rgba(0, 0, 0, 0.4);
391
+ cursor: default;
392
+ }
393
+
394
+ .vx-modalroute-body {
395
+ position: relative;
396
+ flex: 1;
397
+ min-width: 0;
398
+ overflow: auto;
399
+ color: var(--color-text);
400
+ background-color: var(--color-surface);
401
+ }
402
+ /* xplat-web-only:end */
403
+
404
+ /* xplat-web-only:start — placeholder pseudos are DOM-only. Muted like
405
+ real placeholder text, not currentColor (a full-opacity hint reads as
406
+ a typed value); --placeholder-color is the per-field prop escape. */
407
+ input::placeholder,
408
+ textarea::placeholder {
409
+ color: var(--placeholder-color, var(--color-text-secondary));
410
+ }
411
+ /* xplat-web-only:end */
412
+
413
+ /* xplat-web-only:start — form controls don't inherit the body font in the
414
+ DOM (UA stylesheet wins); without this they render in the UA face. */
415
+ input,
416
+ textarea,
417
+ select,
418
+ button {
419
+ font-family: inherit;
420
+ }
421
+ /* xplat-web-only:end */
422
+
423
+ /* Self-drawn spinner — the border ring is shared (native rotates the
424
+ view via `animate`; DOM spins via the keyframes below). */
425
+ .vx-spinner {
426
+ width: 24px;
427
+ height: 24px;
428
+ border-width: 2px;
429
+ border-color: var(--color-text-secondary);
430
+ border-right-color: transparent;
431
+ border-radius: 50%;
432
+ }
433
+ /* Pull-to-refresh — the overlay strip hosting the spinner. Its height is
434
+ the default `refreshThreshold` (64px web / 64dip native); the leaf
435
+ translates it in/out — reveal math lives in refresh.*.ts. */
436
+ .vx-refresh {
437
+ display: flex;
438
+ flex-direction: column;
439
+ align-items: center;
440
+ justify-content: center;
441
+ height: 64px;
442
+ }
443
+ /* xplat-web-only:start — the DOM leaf needs explicit clipping plus the
444
+ absolute overlay; native clips via the wrapper grid
445
+ (clipsToBounds/ViewGroup) and stacks children in one cell. */
446
+ .vx-refresh-wrap {
447
+ position: relative;
448
+ overflow: hidden;
449
+ display: flex;
450
+ flex-direction: column;
451
+ }
452
+ .vx-refresh-wrap > .vx-scroll {
453
+ flex: 1;
454
+ min-height: 0;
455
+ }
456
+ .vx-refresh {
457
+ position: absolute;
458
+ top: 0;
459
+ left: 0;
460
+ right: 0;
461
+ }
462
+ /* xplat-web-only:end */
463
+ /* xplat-web-only:start — DOM needs an inline-block box + CSS animation;
464
+ the native leaf drives view.animate instead */
465
+ .vx-spinner {
466
+ display: inline-block;
467
+ box-sizing: border-box;
468
+ animation: vx-spinner-turn 0.8s linear infinite;
469
+ }
470
+
471
+ @keyframes vx-spinner-turn {
472
+ to {
473
+ transform: rotate(360deg);
474
+ }
475
+ }
476
+ /* xplat-web-only:end */
477
+
478
+ /* Self-drawn switch — flex track + thumb. `--on` flips justify-content,
479
+ which slides the thumb; identical geometry on web and native. */
480
+ .vx-switch {
481
+ width: 48px;
482
+ height: 28px;
483
+ padding-left: 3px;
484
+ padding-right: 3px;
485
+ border-radius: 14px;
486
+ background-color: var(--color-border);
487
+ justify-content: flex-start;
488
+ align-items: center;
489
+ }
490
+ .vx-switch--on {
491
+ background-color: var(--color-primary);
492
+ justify-content: flex-end;
493
+ }
494
+ .vx-switch-thumb {
495
+ width: 22px;
496
+ height: 22px;
497
+ border-radius: 50%;
498
+ background-color: var(--color-surface);
499
+ }
500
+ /* xplat-web-only:start — the DOM host is a div; flex + cursor live here */
501
+ .vx-switch {
502
+ display: flex;
503
+ cursor: pointer;
504
+ }
505
+ /* xplat-web-only:end */
506
+
507
+ /* Self-drawn slider — host is a grid (native) / relative div (web);
508
+ track + fill + thumb overlay the same box. */
509
+ .vx-slider {
510
+ height: 28px;
511
+ }
512
+ .vx-slider-track {
513
+ height: 4px;
514
+ border-radius: 2px;
515
+ background-color: var(--color-border);
516
+ vertical-align: middle;
517
+ }
518
+ .vx-slider-fill {
519
+ height: 4px;
520
+ border-radius: 2px;
521
+ background-color: var(--color-primary);
522
+ vertical-align: middle;
523
+ }
524
+ .vx-slider-thumb {
525
+ width: 20px;
526
+ height: 20px;
527
+ border-radius: 50%;
528
+ background-color: var(--color-primary);
529
+ vertical-align: middle;
530
+ }
531
+ /* xplat-web-only:start — absolute positioning is DOM-only; native grid
532
+ children center via vertical-align and pin via margin-left. */
533
+ .vx-slider {
534
+ position: relative;
535
+ }
536
+ .vx-slider-track,
537
+ .vx-slider-fill {
538
+ position: absolute;
539
+ top: 50%;
540
+ left: 0;
541
+ right: 0;
542
+ transform: translateY(-50%);
543
+ }
544
+ .vx-slider-thumb {
545
+ position: absolute;
546
+ top: 50%;
547
+ transform: translate(-50%, -50%);
548
+ }
549
+ /* xplat-web-only:end */
550
+
551
+ /* xplat-web-only:start — Pager's web leaf is a mandatory scroll-snap row:
552
+ one page per item at 100% host width so scrollLeft / clientWidth is a
553
+ clean page index. Native pages are sized by the widget itself, so the
554
+ whole block is DOM-only. Scrollbar hidden (native has none); contain
555
+ keeps the swipe from chaining to a parent scroller, matching .vx-scroll. */
556
+ .vx-pager {
557
+ display: flex;
558
+ flex-direction: row;
559
+ overflow-x: auto;
560
+ overflow-y: hidden;
561
+ scroll-snap-type: x mandatory;
562
+ overscroll-behavior-x: contain;
563
+ scrollbar-width: none;
564
+ touch-action: pan-x;
565
+ }
566
+ .vx-pager::-webkit-scrollbar {
567
+ display: none;
568
+ }
569
+ .vx-pager-page {
570
+ flex: 0 0 100%;
571
+ min-width: 0;
572
+ display: flex;
573
+ flex-direction: column;
574
+ scroll-snap-align: start;
575
+ }
576
+ /* xplat-web-only:end */
577
+
578
+ /* Phase-1 self-drawn components — functional geometry + token chrome only;
579
+ visual design is the app's job. */
580
+
581
+ /* Button — row-direction pressable (vx-pressable already supplies display
582
+ and press feedback). */
583
+ .vx-button {
584
+ flex-direction: row;
585
+ align-items: center;
586
+ justify-content: center;
587
+ }
588
+
589
+ /* Collapsible/Accordion — column stacks. */
590
+ .vx-collapsible,
591
+ .vx-collapsible-content,
592
+ .vx-accordion,
593
+ .vx-accordion-item {
594
+ flex-direction: column;
595
+ }
596
+
597
+ /* Checkbox — 20px box + check glyph; --on fills with primary. */
598
+ .vx-checkbox-row {
599
+ flex-direction: row;
600
+ align-items: center;
601
+ }
602
+ .vx-checkbox {
603
+ width: 20px;
604
+ height: 20px;
605
+ border-width: 1px;
606
+ border-color: var(--color-border);
607
+ border-radius: var(--radius-sm);
608
+ align-items: center;
609
+ justify-content: center;
610
+ }
611
+ .vx-checkbox--on .vx-checkbox {
612
+ background-color: var(--color-primary);
613
+ border-color: var(--color-primary);
614
+ }
615
+ .vx-checkbox-check {
616
+ font-size: 14px;
617
+ line-height: 20px;
618
+ color: var(--color-onprimary);
619
+ }
620
+ .vx-checkbox-label {
621
+ margin-left: 8px;
622
+ }
623
+ .vx-checkbox--disabled {
624
+ opacity: 0.5;
625
+ }
626
+
627
+ /* Radio group — column/row of dot options. */
628
+ .vx-radio-group {
629
+ flex-direction: column;
630
+ }
631
+ .vx-radio-group--row {
632
+ flex-direction: row;
633
+ }
634
+ .vx-radio-row {
635
+ flex-direction: row;
636
+ align-items: center;
637
+ }
638
+ .vx-radio {
639
+ width: 18px;
640
+ height: 18px;
641
+ border-width: 1px;
642
+ border-color: var(--color-border);
643
+ border-radius: 50%;
644
+ align-items: center;
645
+ justify-content: center;
646
+ }
647
+ .vx-radio--on .vx-radio {
648
+ border-color: var(--color-primary);
649
+ }
650
+ .vx-radio-dot {
651
+ width: 8px;
652
+ height: 8px;
653
+ border-radius: 50%;
654
+ background-color: var(--color-primary);
655
+ }
656
+ .vx-radio-label {
657
+ margin-left: 8px;
658
+ }
659
+ .vx-radio--disabled {
660
+ opacity: 0.5;
661
+ }
662
+
663
+ /* SegmentedControl — equal-width segments in a rounded track; `--on`
664
+ raises the selected one. flex-basis is dead on NS (the shorthand parser
665
+ drops it and the standalone property isn't registered), so width:0 +
666
+ flex-grow:1 is what distributes segments equally on both engines. */
667
+ .vx-segmented {
668
+ flex-direction: row;
669
+ padding: 3px;
670
+ border-width: 1px;
671
+ border-color: var(--color-border);
672
+ border-radius: var(--radius-md);
673
+ corner-shape: squircle;
674
+ background-color: var(--color-surface-secondary);
675
+ color: var(--color-text);
676
+ }
677
+ .vx-segment {
678
+ flex-grow: 1;
679
+ width: 0;
680
+ flex-direction: row;
681
+ align-items: center;
682
+ justify-content: center;
683
+ padding-top: 6px;
684
+ padding-bottom: 6px;
685
+ padding-left: 10px;
686
+ padding-right: 10px;
687
+ border-radius: var(--radius-sm);
688
+ }
689
+ .vx-segment--on {
690
+ background-color: var(--color-surface);
691
+ }
692
+ .vx-segment-label {
693
+ font-size: 13px;
694
+ color: var(--color-text-secondary);
695
+ }
696
+ .vx-segment--on .vx-segment-label {
697
+ color: var(--color-text);
698
+ font-weight: 600;
699
+ }
700
+ .vx-segmented--disabled,
701
+ .vx-segment--disabled {
702
+ opacity: 0.5;
703
+ }
704
+ /* xplat-web-only:start — the DOM hosts are divs; flex + cursor live here */
705
+ .vx-segmented {
706
+ display: flex;
707
+ }
708
+ .vx-segment {
709
+ display: flex;
710
+ cursor: pointer;
711
+ user-select: none;
712
+ }
713
+ .vx-segment:focus {
714
+ outline: 1px solid var(--color-primary);
715
+ outline-offset: -1px;
716
+ }
717
+ .vx-segment--disabled {
718
+ cursor: default;
719
+ }
720
+ /* xplat-web-only:end */
721
+
722
+ /* SearchInput — chrome-reset field: bordered shell, leading glyph, the
723
+ field owns the remaining width, self-drawn clear. The web leaf hides the
724
+ engine's own search-cancel button so native's (hand-drawn) matches. */
725
+ .vx-search {
726
+ flex-direction: row;
727
+ align-items: center;
728
+ padding-top: 6px;
729
+ padding-bottom: 6px;
730
+ padding-left: 10px;
731
+ padding-right: 6px;
732
+ border-width: 1px;
733
+ border-color: var(--color-border);
734
+ border-radius: var(--radius-md);
735
+ corner-shape: squircle;
736
+ background-color: var(--color-surface);
737
+ color: var(--color-text);
738
+ }
739
+ .vx-search-icon {
740
+ color: var(--color-text-secondary);
741
+ }
742
+ .vx-search-field {
743
+ flex-grow: 1;
744
+ padding-left: 8px;
745
+ padding-right: 8px;
746
+ font-size: 14px;
747
+ color: var(--color-text);
748
+ }
749
+ .vx-search-clear {
750
+ width: 24px;
751
+ height: 24px;
752
+ border-radius: 9999px;
753
+ align-items: center;
754
+ justify-content: center;
755
+ background-color: var(--color-surface-secondary);
756
+ color: var(--color-text-secondary);
757
+ }
758
+ .vx-search--disabled {
759
+ opacity: 0.5;
760
+ }
761
+ /* xplat-web-only:start — the DOM host/field/buttons need display + the UA
762
+ reset; native's flexbox children carry these from the class already. */
763
+ .vx-search {
764
+ display: flex;
765
+ }
766
+ .vx-search-icon {
767
+ display: inline-flex;
768
+ flex: none;
769
+ }
770
+ .vx-search-field {
771
+ min-width: 0;
772
+ border: 0;
773
+ background: none;
774
+ outline: none;
775
+ appearance: none;
776
+ -webkit-appearance: none;
777
+ }
778
+ input.vx-search-field::-webkit-search-cancel-button {
779
+ display: none;
780
+ }
781
+ .vx-search-clear {
782
+ display: inline-flex;
783
+ border: 0;
784
+ padding: 0;
785
+ cursor: pointer;
786
+ }
787
+ /* xplat-web-only:end */
788
+
789
+ /* Anchored menus — panel + item rows (the Popover leaf positions it). */
790
+ .vx-menu {
791
+ min-width: 140px;
792
+ padding: 4px;
793
+ border-width: 1px;
794
+ border-color: var(--color-border);
795
+ border-radius: var(--radius-md);
796
+ corner-shape: squircle;
797
+ background-color: var(--color-surface);
798
+ color: var(--color-text);
799
+ }
800
+ .vx-menu-list {
801
+ flex-direction: column;
802
+ }
803
+ .vx-menu-item {
804
+ flex-direction: row;
805
+ align-items: center;
806
+ padding: 6px 10px;
807
+ border-radius: var(--radius-sm);
808
+ }
809
+ .vx-menu-item--disabled {
810
+ opacity: 0.5;
811
+ }
812
+ /* xplat-web-only:start — hover affordance and cursor are DOM-only */
813
+ .vx-menu-item {
814
+ cursor: pointer;
815
+ }
816
+ .vx-menu-item:hover {
817
+ background-color: var(--color-border);
818
+ }
819
+ /* xplat-web-only:end */
820
+
821
+ /* Badge — inline chip row. */
822
+ .vx-badge {
823
+ flex-direction: row;
824
+ align-items: center;
825
+ border-radius: var(--radius-sm);
826
+ padding: 1px 6px;
827
+ font-size: 12px;
828
+ line-height: 16px;
829
+ }
830
+ /* xplat-web-only:start — span is inline by default; needs inline-flex */
831
+ .vx-badge {
832
+ display: inline-flex;
833
+ }
834
+ /* xplat-web-only:end */
835
+
836
+ /* Separator — hairline rule; --h spans width, --v spans height. */
837
+ .vx-separator--h {
838
+ height: 1px;
839
+ background-color: var(--color-border);
840
+ }
841
+ .vx-separator--v {
842
+ width: 1px;
843
+ align-self: stretch;
844
+ background-color: var(--color-border);
845
+ }
846
+
847
+ /* Skeleton — placeholder block. */
848
+ .vx-skeleton {
849
+ background-color: var(--color-border);
850
+ border-radius: var(--radius-md);
851
+ corner-shape: squircle;
852
+ }
853
+
854
+ /* Avatar — centered fallback inside the circle. */
855
+ .vx-avatar {
856
+ align-items: center;
857
+ justify-content: center;
858
+ background-color: var(--color-border);
859
+ }
860
+ .vx-avatar-group {
861
+ flex-direction: row;
862
+ align-items: center;
863
+ }
864
+ /* xplat-web-only:start — display:flex for the div-based flex classes */
865
+ .vx-collapsible,
866
+ .vx-collapsible-content,
867
+ .vx-accordion,
868
+ .vx-accordion-item,
869
+ .vx-checkbox-row,
870
+ .vx-checkbox,
871
+ .vx-radio-group,
872
+ .vx-radio-row,
873
+ .vx-radio,
874
+ .vx-menu-list,
875
+ .vx-menu-item,
876
+ .vx-contextmenu,
877
+ .vx-avatar,
878
+ .vx-avatar-group,
879
+ .vx-avatar-group-item {
880
+ display: flex;
881
+ }
882
+ .vx-checkbox-row,
883
+ .vx-radio-row {
884
+ cursor: pointer;
885
+ }
886
+ .vx-checkbox-check {
887
+ display: block;
888
+ }
889
+ /* xplat-web-only:end */
890
+
891
+ /* Phase-2 form field layer. */
892
+
893
+ /* FormField — label / control / message column. */
894
+ .vx-field {
895
+ flex-direction: column;
896
+ }
897
+ .vx-field-label {
898
+ font-size: 13px;
899
+ line-height: 20px;
900
+ font-weight: 500;
901
+ margin-bottom: 4px;
902
+ }
903
+ .vx-field-required {
904
+ color: var(--color-danger);
905
+ }
906
+ .vx-field-msg {
907
+ font-size: 12px;
908
+ line-height: 16px;
909
+ margin-top: 4px;
910
+ color: var(--color-text-secondary);
911
+ }
912
+ .vx-field-msg--error {
913
+ color: var(--color-danger);
914
+ }
915
+ .vx-fieldgroup {
916
+ flex-direction: column;
917
+ }
918
+ .vx-fieldgroup-label {
919
+ font-size: 13px;
920
+ line-height: 20px;
921
+ font-weight: 600;
922
+ margin-bottom: 8px;
923
+ }
924
+
925
+ /* ListItem — a reusable shared row; callers own the surrounding list chrome. */
926
+ .vx-listitem {
927
+ flex-direction: row;
928
+ align-items: center;
929
+ width: 100%;
930
+ padding: 10px 12px;
931
+ gap: 12px;
932
+ }
933
+ .vx-listitem-leading,
934
+ .vx-listitem-trailing {
935
+ flex-shrink: 0;
936
+ align-items: center;
937
+ }
938
+ .vx-listitem-content {
939
+ flex-direction: column;
940
+ flex-grow: 1;
941
+ }
942
+ .vx-listitem-title {
943
+ font-weight: 500;
944
+ }
945
+ .vx-listitem-supporting {
946
+ font-size: 12px;
947
+ line-height: 16px;
948
+ color: var(--color-text-secondary);
949
+ }
950
+
951
+ /* InputNumber — steppers flanking a centered field. */
952
+ .vx-inputnumber {
953
+ flex-direction: row;
954
+ align-items: center;
955
+ }
956
+ .vx-inputnumber-step {
957
+ padding: 4px 10px;
958
+ border-width: 1px;
959
+ border-color: var(--color-border);
960
+ border-radius: var(--radius-sm);
961
+ align-items: center;
962
+ justify-content: center;
963
+ }
964
+ .vx-inputnumber-field {
965
+ width: 64px;
966
+ margin-left: 8px;
967
+ margin-right: 8px;
968
+ text-align: center;
969
+ }
970
+ .vx-inputnumber--disabled {
971
+ opacity: 0.5;
972
+ }
973
+
974
+ /* PinInput — row of single cells. */
975
+ .vx-pininput {
976
+ flex-direction: row;
977
+ }
978
+ .vx-pininput-cell {
979
+ width: 40px;
980
+ margin-right: 8px;
981
+ text-align: center;
982
+ }
983
+ .vx-pininput--disabled {
984
+ opacity: 0.5;
985
+ }
986
+
987
+ /* Select — trigger row + check column inside the anchored listbox. */
988
+ .vx-select-trigger {
989
+ flex-direction: row;
990
+ align-items: center;
991
+ justify-content: space-between;
992
+ padding: 6px 10px;
993
+ border-width: 1px;
994
+ border-color: var(--color-border);
995
+ border-radius: var(--radius-sm);
996
+ }
997
+ .vx-select--disabled {
998
+ opacity: 0.5;
999
+ }
1000
+ .vx-select-placeholder {
1001
+ color: var(--color-text-secondary);
1002
+ }
1003
+ .vx-select-caret {
1004
+ margin-left: 8px;
1005
+ }
1006
+ .vx-select-check {
1007
+ width: 16px;
1008
+ }
1009
+ .vx-select-search {
1010
+ margin-bottom: 4px;
1011
+ }
1012
+
1013
+ /* InputTags — wrapped chip row + trailing field. */
1014
+ .vx-inputtags {
1015
+ flex-direction: row;
1016
+ flex-wrap: wrap;
1017
+ align-items: center;
1018
+ }
1019
+ .vx-inputtags-tag {
1020
+ flex-direction: row;
1021
+ align-items: center;
1022
+ padding: 1px 6px;
1023
+ margin-right: 4px;
1024
+ margin-bottom: 4px;
1025
+ border-radius: var(--radius-sm);
1026
+ background-color: var(--color-border);
1027
+ }
1028
+ .vx-inputtags-remove {
1029
+ margin-left: 4px;
1030
+ }
1031
+ .vx-inputtags-field {
1032
+ flex: 1;
1033
+ min-width: 80px;
1034
+ }
1035
+ .vx-inputtags--disabled {
1036
+ opacity: 0.5;
1037
+ }
1038
+
1039
+ /* InputRating — glyph row; --on lights the cell. */
1040
+ .vx-rating {
1041
+ flex-direction: row;
1042
+ }
1043
+ .vx-rating-cell {
1044
+ padding: 2px;
1045
+ }
1046
+ .vx-rating-glyph {
1047
+ font-size: 20px;
1048
+ line-height: 24px;
1049
+ color: var(--color-border);
1050
+ }
1051
+ .vx-rating-cell--on .vx-rating-glyph {
1052
+ color: var(--color-primary);
1053
+ }
1054
+ .vx-rating--disabled {
1055
+ opacity: 0.5;
1056
+ }
1057
+
1058
+ /* CheckboxGroup — column/row of checkboxes. */
1059
+ .vx-checkbox-group {
1060
+ flex-direction: column;
1061
+ }
1062
+ .vx-checkbox-group--row {
1063
+ flex-direction: row;
1064
+ }
1065
+ /* xplat-web-only:start — display:flex for the div/span flex classes */
1066
+ .vx-field,
1067
+ .vx-fieldgroup,
1068
+ .vx-listitem,
1069
+ .vx-listitem-leading,
1070
+ .vx-listitem-content,
1071
+ .vx-listitem-trailing,
1072
+ .vx-inputnumber,
1073
+ .vx-inputnumber-step,
1074
+ .vx-select-trigger,
1075
+ .vx-select-list,
1076
+ .vx-inputtags,
1077
+ .vx-inputtags-tag,
1078
+ .vx-rating,
1079
+ .vx-rating-cell,
1080
+ .vx-checkbox-group {
1081
+ display: flex;
1082
+ }
1083
+ .vx-rating-cell {
1084
+ cursor: pointer;
1085
+ }
1086
+ /* xplat-web-only:end */
1087
+
1088
+ /* Phase-3 navigation & wayfinding. */
1089
+
1090
+ /* Breadcrumb — inline trail. */
1091
+ .vx-breadcrumb {
1092
+ flex-direction: row;
1093
+ align-items: center;
1094
+ flex-wrap: wrap;
1095
+ }
1096
+ .vx-breadcrumb-item {
1097
+ flex-direction: row;
1098
+ align-items: center;
1099
+ }
1100
+ .vx-breadcrumb-sep {
1101
+ margin-left: 6px;
1102
+ margin-right: 6px;
1103
+ color: var(--color-text-secondary);
1104
+ }
1105
+ .vx-breadcrumb-link {
1106
+ color: var(--color-primary);
1107
+ }
1108
+
1109
+ /* Pagination — windowed page buttons. */
1110
+ .vx-pagination {
1111
+ flex-direction: row;
1112
+ align-items: center;
1113
+ }
1114
+ .vx-page-btn {
1115
+ min-width: 28px;
1116
+ height: 28px;
1117
+ padding: 0 6px;
1118
+ margin-right: 4px;
1119
+ border-width: 1px;
1120
+ border-color: var(--color-border);
1121
+ border-radius: var(--radius-sm);
1122
+ align-items: center;
1123
+ justify-content: center;
1124
+ }
1125
+ .vx-page-btn--on {
1126
+ background-color: var(--color-primary);
1127
+ border-color: var(--color-primary);
1128
+ color: var(--color-onprimary);
1129
+ }
1130
+ .vx-page-ellipsis {
1131
+ margin-right: 4px;
1132
+ color: var(--color-text-secondary);
1133
+ }
1134
+ .vx-pagination--disabled {
1135
+ opacity: 0.5;
1136
+ }
1137
+
1138
+ /* Stepper — dot + label cells joined by a hairline. */
1139
+ .vx-stepper {
1140
+ flex-direction: row;
1141
+ align-items: center;
1142
+ }
1143
+ .vx-stepper-cell {
1144
+ flex-direction: row;
1145
+ align-items: center;
1146
+ }
1147
+ .vx-stepper-line {
1148
+ width: 24px;
1149
+ height: 1px;
1150
+ background-color: var(--color-border);
1151
+ }
1152
+ .vx-stepper-line--done {
1153
+ background-color: var(--color-primary);
1154
+ }
1155
+ .vx-step {
1156
+ flex-direction: row;
1157
+ align-items: center;
1158
+ }
1159
+ .vx-step-dot {
1160
+ width: 24px;
1161
+ height: 24px;
1162
+ border-width: 1px;
1163
+ border-color: var(--color-border);
1164
+ border-radius: 50%;
1165
+ text-align: center;
1166
+ font-size: 12px;
1167
+ line-height: 22px;
1168
+ color: var(--color-text-secondary);
1169
+ }
1170
+ .vx-step--on .vx-step-dot {
1171
+ border-color: var(--color-primary);
1172
+ color: var(--color-primary);
1173
+ }
1174
+ .vx-step--done .vx-step-dot {
1175
+ background-color: var(--color-primary);
1176
+ border-color: var(--color-primary);
1177
+ color: var(--color-onprimary);
1178
+ }
1179
+ .vx-step-label {
1180
+ margin-left: 6px;
1181
+ }
1182
+ .vx-step--disabled {
1183
+ opacity: 0.5;
1184
+ }
1185
+
1186
+ /* NavigationMenu — row/column of nav items. */
1187
+ .vx-navmenu,
1188
+ .vx-navmenu--row {
1189
+ flex-direction: row;
1190
+ align-items: center;
1191
+ }
1192
+ .vx-navmenu--col {
1193
+ flex-direction: column;
1194
+ align-items: flex-start;
1195
+ }
1196
+ .vx-navmenu-item {
1197
+ flex-direction: row;
1198
+ align-items: center;
1199
+ padding: 6px 10px;
1200
+ border-radius: var(--radius-sm);
1201
+ }
1202
+ .vx-navmenu-item--on {
1203
+ background-color: var(--color-border);
1204
+ }
1205
+ .vx-navmenu-item--disabled {
1206
+ opacity: 0.5;
1207
+ }
1208
+ .vx-navmenu-label {
1209
+ margin-left: 4px;
1210
+ }
1211
+
1212
+ /* CommandPalette — panel centered by the overlay layer. */
1213
+ .vx-commandpalette {
1214
+ width: 360px;
1215
+ /* vw, not %: the overlay-content wrapper shrink-wraps the palette, so a
1216
+ * plain % would resolve against the palette's own width (clamping an
1217
+ * explicit style.width to 90% of itself). */
1218
+ max-width: 90vw;
1219
+ padding: 8px;
1220
+ border-width: 1px;
1221
+ border-color: var(--color-border);
1222
+ border-radius: var(--radius-md);
1223
+ corner-shape: squircle;
1224
+ background-color: var(--color-surface);
1225
+ color: var(--color-text);
1226
+ }
1227
+ .vx-cmdk-search {
1228
+ margin-bottom: 4px;
1229
+ }
1230
+ /* xplat-web-only:start — display, centering, and cursor are DOM-only */
1231
+ .vx-breadcrumb,
1232
+ .vx-breadcrumb-item,
1233
+ .vx-pagination,
1234
+ .vx-page-btn,
1235
+ .vx-stepper,
1236
+ .vx-stepper-cell,
1237
+ .vx-step,
1238
+ .vx-navmenu,
1239
+ .vx-navmenu-item {
1240
+ display: flex;
1241
+ }
1242
+ .vx-cmdk-layer .vx-overlay-content {
1243
+ position: absolute;
1244
+ top: 15%;
1245
+ left: 50%;
1246
+ transform: translateX(-50%);
1247
+ }
1248
+ .vx-page-btn,
1249
+ .vx-breadcrumb-link,
1250
+ .vx-step,
1251
+ .vx-navmenu-item {
1252
+ cursor: pointer;
1253
+ }
1254
+ /* xplat-web-only:end */
1255
+
1256
+ /* Phase-4 data display. */
1257
+
1258
+ /* Table — header + bounded rows (unvirtualized by design). */
1259
+ .vx-table {
1260
+ flex-direction: column;
1261
+ border-width: 1px;
1262
+ border-color: var(--color-border);
1263
+ border-radius: var(--radius-md);
1264
+ }
1265
+ .vx-table-head,
1266
+ .vx-table-row {
1267
+ flex-direction: row;
1268
+ }
1269
+ .vx-table-th {
1270
+ font-weight: 600;
1271
+ }
1272
+ .vx-table-cell {
1273
+ padding: 8px 12px;
1274
+ }
1275
+ .vx-table-head {
1276
+ border-bottom-width: 1px;
1277
+ border-bottom-color: var(--color-border);
1278
+ }
1279
+ .vx-table-empty {
1280
+ padding: 16px;
1281
+ align-items: center;
1282
+ }
1283
+
1284
+ /* Timeline — dot + connector rail beside content. */
1285
+ .vx-timeline {
1286
+ flex-direction: column;
1287
+ }
1288
+ .vx-timeline-item {
1289
+ flex-direction: row;
1290
+ }
1291
+ .vx-timeline-rail {
1292
+ flex-direction: column;
1293
+ align-items: center;
1294
+ width: 20px;
1295
+ }
1296
+ .vx-timeline-dot {
1297
+ width: 10px;
1298
+ height: 10px;
1299
+ margin-top: 5px;
1300
+ border-radius: 50%;
1301
+ background-color: var(--color-primary);
1302
+ align-items: center;
1303
+ justify-content: center;
1304
+ }
1305
+ .vx-timeline-line {
1306
+ width: 1px;
1307
+ flex: 1;
1308
+ background-color: var(--color-border);
1309
+ }
1310
+ .vx-timeline-body {
173
1311
  flex-direction: column;
174
- user-select: none;
1312
+ padding-left: 10px;
1313
+ padding-bottom: 16px;
175
1314
  }
176
-
177
- /* web press feedback */
178
- .vx-pressable:active {
179
- opacity: 0.85;
1315
+ .vx-timeline-time {
1316
+ font-size: 12px;
1317
+ line-height: 16px;
1318
+ color: var(--color-text-secondary);
180
1319
  }
181
- .vx-pressable-no-feedback:active {
182
- opacity: 1;
1320
+ .vx-timeline-title {
1321
+ font-weight: 600;
183
1322
  }
184
- /* native press feedback (NS pseudo — dead rule on web, and vice versa) */
185
- .vx-pressable:pressed {
186
- opacity: 0.85;
1323
+ .vx-timeline-desc {
1324
+ color: var(--color-text-secondary);
187
1325
  }
188
1326
 
189
- /* xplat-web-only:start — overlays/toasts/popovers render through RootLayout
190
- or showModal on native; these portal/positioning rules are web-only */
191
- .vx-overlay {
192
- z-index: 1000;
1327
+ /* Tree — indented collapsible rows. */
1328
+ .vx-tree {
1329
+ flex-direction: column;
193
1330
  }
194
-
195
- .vx-overlay-shade {
196
- position: absolute;
197
- inset: 0;
198
- background-color: rgba(0, 0, 0, 0.4);
1331
+ .vx-tree-node {
1332
+ flex-direction: column;
199
1333
  }
200
-
201
- .vx-overlay-content {
202
- position: relative;
203
- z-index: 1;
1334
+ .vx-tree-row {
1335
+ flex-direction: row;
1336
+ align-items: center;
1337
+ padding: 4px 0;
204
1338
  }
205
-
206
- .vx-popover {
207
- z-index: 1001;
1339
+ .vx-tree-row--disabled {
1340
+ opacity: 0.5;
208
1341
  }
209
-
210
- .vx-popover-backdrop {
211
- background-color: transparent;
1342
+ .vx-tree-caret {
1343
+ width: 14px;
1344
+ margin-left: 4px;
212
1345
  }
213
1346
 
214
- .vx-toast-host {
215
- position: fixed;
216
- z-index: 1002;
217
- left: 0;
218
- right: 0;
219
- display: flex;
220
- justify-content: center;
221
- pointer-events: none;
1347
+ /* Alert — icon + body callout; tone picks border/text colors. */
1348
+ .vx-alert {
1349
+ flex-direction: row;
1350
+ padding: 10px 12px;
1351
+ border-width: 1px;
1352
+ border-radius: var(--radius-md);
1353
+ corner-shape: squircle;
1354
+ border-color: var(--color-border);
222
1355
  }
223
-
224
- .vx-toast-top {
225
- top: 24px;
1356
+ .vx-alert-body {
1357
+ flex-direction: column;
1358
+ flex: 1;
1359
+ margin-left: 8px;
226
1360
  }
227
- .vx-toast-bottom {
228
- bottom: 24px;
1361
+ .vx-alert-title {
1362
+ font-weight: 600;
229
1363
  }
230
-
231
- .vx-toast {
232
- pointer-events: auto;
1364
+ .vx-alert--error {
1365
+ border-color: var(--color-danger);
233
1366
  }
234
- /* xplat-web-only:end */
235
-
236
- /* auto-grow owns height — the manual resize handle has no native analog */
237
- /* xplat-web-only:start */
238
- .vx-textarea {
239
- resize: none;
1367
+ .vx-alert--warning {
1368
+ border-color: var(--color-warning, #d9a400);
1369
+ }
1370
+ .vx-alert--success {
1371
+ border-color: var(--color-success, #2e9e5b);
1372
+ }
1373
+ .vx-alert--info {
1374
+ border-color: var(--color-primary);
240
1375
  }
241
- /* xplat-web-only:end */
242
1376
 
243
- /* Modal is a real top-layer dialog on web. Presentation variants keep their
244
- sizing and anchoring in tokens so both the component and openModal share it. */
245
- /* xplat-web-only:start */
246
- .vx-modal {
247
- width: 480px;
248
- max-width: 90%;
249
- max-height: 90%;
250
- padding: 24px;
251
- border: 1px solid var(--color-border);
252
- border-radius: var(--radius-xl);
1377
+ /* Card — sectioned container. */
1378
+ .vx-card {
1379
+ flex-direction: column;
1380
+ border-width: 1px;
1381
+ border-color: var(--color-border);
1382
+ border-radius: var(--radius-md);
253
1383
  corner-shape: squircle;
254
- color: var(--color-text);
255
1384
  background-color: var(--color-surface);
256
1385
  }
257
-
258
- .vx-modal::backdrop {
259
- background: rgba(0, 0, 0, 0.4);
1386
+ .vx-card-header {
1387
+ padding: 12px;
1388
+ border-bottom-width: 1px;
1389
+ border-bottom-color: var(--color-border);
260
1390
  }
261
-
262
- .vx-modal--dialog {
263
- width: 480px;
264
- max-width: 90%;
1391
+ .vx-card-body {
1392
+ padding: 12px;
1393
+ flex-direction: column;
1394
+ }
1395
+ .vx-card-footer {
1396
+ padding: 12px;
1397
+ border-top-width: 1px;
1398
+ border-top-color: var(--color-border);
265
1399
  }
266
1400
 
267
- .vx-modal--sheet {
268
- width: 100%;
269
- max-width: none;
270
- max-height: 85%;
271
- position: fixed;
272
- inset: auto 0 0;
273
- margin: 0;
274
- border-top-left-radius: var(--radius-xl);
275
- border-top-right-radius: var(--radius-xl);
1401
+ /* Chip — pressable pill with selected + remove states. */
1402
+ .vx-chip {
1403
+ flex-direction: row;
1404
+ align-items: center;
1405
+ padding: 3px 10px;
1406
+ border-width: 1px;
1407
+ border-color: var(--color-border);
1408
+ border-radius: var(--radius-md);
276
1409
  corner-shape: squircle;
1410
+ font-size: 13px;
277
1411
  }
278
-
279
- .vx-modal--fullscreen {
280
- width: 100%;
281
- max-width: none;
282
- height: 100%;
283
- max-height: none;
284
- margin: 0;
285
- border-radius: 0;
1412
+ .vx-chip--on {
1413
+ background-color: var(--color-primary);
1414
+ border-color: var(--color-primary);
1415
+ color: var(--color-onprimary);
1416
+ }
1417
+ .vx-chip--disabled {
1418
+ opacity: 0.5;
1419
+ }
1420
+ .vx-chip-remove {
1421
+ margin-left: 6px;
286
1422
  }
287
1423
 
288
- /* Modal ROUTES (pushRoute presentation:'modal') — the URL stays underneath,
289
- so the overlay is a fixed layer over the shell rather than a dialog. */
290
- .vx-modalroute {
291
- position: fixed;
292
- inset: 0;
293
- z-index: 1000;
294
- display: flex;
295
- align-items: stretch;
296
- justify-content: stretch;
1424
+ /* Kbd — keycap glyph. */
1425
+ .vx-kbd {
1426
+ padding: 1px 5px;
1427
+ border-width: 1px;
1428
+ border-color: var(--color-border);
1429
+ border-bottom-width: 2px;
1430
+ border-radius: var(--radius-sm);
1431
+ font-size: 12px;
297
1432
  }
298
1433
 
299
- .vx-modalroute-shade {
300
- position: absolute;
301
- inset: 0;
302
- border: 0;
303
- padding: 0;
304
- background: rgba(0, 0, 0, 0.4);
305
- cursor: default;
1434
+ /* Empty — centered placeholder. */
1435
+ .vx-empty {
1436
+ flex-direction: column;
1437
+ align-items: center;
1438
+ padding: 24px;
1439
+ }
1440
+ .vx-empty-title {
1441
+ font-weight: 600;
1442
+ margin-top: 8px;
1443
+ }
1444
+ .vx-empty-desc {
1445
+ color: var(--color-text-secondary);
1446
+ margin-top: 2px;
306
1447
  }
307
1448
 
308
- .vx-modalroute-body {
309
- position: relative;
310
- flex: 1;
311
- min-width: 0;
312
- overflow: auto;
313
- color: var(--color-text);
1449
+ /* Banner — notice strip. */
1450
+ .vx-banner {
1451
+ flex-direction: row;
1452
+ align-items: center;
1453
+ padding: 8px 12px;
1454
+ border-width: 1px;
1455
+ border-color: var(--color-border);
1456
+ border-radius: var(--radius-md);
314
1457
  background-color: var(--color-surface);
315
1458
  }
316
- /* xplat-web-only:end */
317
-
318
- /* xplat-web-only:start — placeholder pseudos are DOM-only. Muted like
319
- real placeholder text, not currentColor (a full-opacity hint reads as
320
- a typed value); --placeholder-color is the per-field prop escape. */
321
- input::placeholder,
322
- textarea::placeholder {
323
- color: var(--placeholder-color, var(--color-text-secondary));
1459
+ .vx-banner-body {
1460
+ flex-direction: column;
1461
+ flex: 1;
1462
+ margin-left: 8px;
324
1463
  }
325
- /* xplat-web-only:end */
326
-
327
- /* xplat-web-only:start — form controls don't inherit the body font in the
328
- DOM (UA stylesheet wins); without this they render in the UA face. */
329
- input,
330
- textarea,
331
- select,
332
- button {
333
- font-family: inherit;
1464
+ .vx-banner-dismiss {
1465
+ margin-left: 8px;
334
1466
  }
335
- /* xplat-web-only:end */
336
1467
 
337
- /* xplat-web-only:start — native ActivityIndicator is the NS widget */
338
- .vx-spinner {
339
- display: inline-block;
340
- width: 1em;
341
- height: 1em;
342
- box-sizing: border-box;
343
- border: 2px solid currentColor;
344
- border-right-color: transparent;
345
- border-radius: 50%;
346
- animation: vx-spinner-turn 0.8s linear infinite;
1468
+ /* User — avatar + text column. */
1469
+ .vx-user {
1470
+ flex-direction: row;
1471
+ align-items: center;
1472
+ }
1473
+ .vx-user-body {
1474
+ flex-direction: column;
1475
+ margin-left: 10px;
1476
+ }
1477
+ .vx-user-name {
1478
+ font-weight: 600;
1479
+ }
1480
+ .vx-user-desc {
1481
+ font-size: 12px;
1482
+ line-height: 16px;
1483
+ color: var(--color-text-secondary);
347
1484
  }
348
1485
 
349
- @keyframes vx-spinner-turn {
350
- to {
351
- transform: rotate(360deg);
352
- }
1486
+ /* ProgressGroup — stacked labeled meters. */
1487
+ .vx-progressgroup {
1488
+ flex-direction: column;
1489
+ }
1490
+ .vx-progressgroup-row {
1491
+ flex-direction: row;
1492
+ align-items: center;
1493
+ }
1494
+ .vx-progressgroup-label {
1495
+ margin-left: 8px;
1496
+ }
1497
+ /* xplat-web-only:start — display:flex for the div-based flex classes */
1498
+ .vx-table,
1499
+ .vx-table-head,
1500
+ .vx-table-row,
1501
+ .vx-timeline,
1502
+ .vx-timeline-item,
1503
+ .vx-timeline-rail,
1504
+ .vx-timeline-body,
1505
+ .vx-tree,
1506
+ .vx-tree-node,
1507
+ .vx-tree-row,
1508
+ .vx-alert,
1509
+ .vx-alert-body,
1510
+ .vx-card,
1511
+ .vx-card-body,
1512
+ .vx-banner,
1513
+ .vx-banner-body,
1514
+ .vx-user,
1515
+ .vx-user-body,
1516
+ .vx-progressgroup,
1517
+ .vx-progressgroup-row {
1518
+ display: flex;
1519
+ }
1520
+ .vx-table-row--pressable,
1521
+ .vx-tree-row,
1522
+ .vx-user--pressable,
1523
+ .vx-banner-dismiss,
1524
+ .vx-chip-remove {
1525
+ cursor: pointer;
353
1526
  }
354
1527
  /* xplat-web-only:end */
355
1528
 
1529
+ .vx-heading {
1530
+ margin: 0;
1531
+ }
1532
+ /* NativeScript reads the numeric prefix of font-size; keep this scale in px. */
356
1533
  .vx-h1 {
357
- font-size: 2em;
1534
+ font-size: 32px;
358
1535
  font-weight: bold;
359
1536
  }
360
1537
  .vx-h2 {
361
- font-size: 1.5em;
1538
+ font-size: 24px;
362
1539
  font-weight: bold;
363
1540
  }
364
1541
  .vx-h3 {
365
- font-size: 1.17em;
1542
+ font-size: 18.72px;
366
1543
  font-weight: bold;
367
1544
  }
368
1545
  .vx-h4 {
369
- font-size: 1em;
1546
+ font-size: 16px;
370
1547
  font-weight: bold;
371
1548
  }
372
1549
  .vx-h5 {
373
- font-size: 0.83em;
1550
+ font-size: 13.28px;
374
1551
  font-weight: bold;
375
1552
  }
376
1553
  .vx-h6 {
377
- font-size: 0.67em;
1554
+ font-size: 10.72px;
378
1555
  font-weight: bold;
379
1556
  }
380
1557
 
381
- /* xplat-web-only:start — glass material is real on iOS 26+; web approximates
382
- with backdrop-filter. The class also lands on native elements (inert) so
383
- apps can style their own fallback — but these rules are DOM-only. */
384
- .vx-glass {
385
- background-color: color-mix(in srgb, var(--color-surface) 30%, transparent);
386
- border: 1px solid rgba(255, 255, 255, 0.25);
387
- }
388
-
389
- @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
390
- .vx-glass {
391
- background-color: color-mix(in srgb, var(--color-surface) 20%, transparent);
392
- -webkit-backdrop-filter: blur(20px) saturate(1.6);
393
- backdrop-filter: blur(20px) saturate(1.6);
394
- }
395
- }
396
-
397
- .vx-glass--clear {
398
- background-color: color-mix(in srgb, var(--color-surface) 12%, transparent);
399
- border-color: rgba(255, 255, 255, 0.15);
400
- }
401
-
402
- @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
403
- .vx-glass--clear {
404
- -webkit-backdrop-filter: blur(8px) saturate(1.3);
405
- backdrop-filter: blur(8px) saturate(1.3);
406
- }
407
- }
408
- /* xplat-web-only:end */
409
-
410
1558
  /* utilities (hand-written subset — do NOT adopt Tailwind until
411
1559
  NativeScript/tailwind#226 is resolved; the plugin strips core-supported
412
1560
  props incl. gap, drops all @media, and rewrites invisible→collapse) */
@@ -420,14 +1568,19 @@ button {
420
1568
  /* Flex divergence guards — NS FlexboxLayout diverges from web flexbox on
421
1569
  * shrinkability: grow children never shrink below intrinsic width, fixed
422
1570
  * children get crushed, and auto-height rows re-measure grow children at
423
- * zero height. min-w-0/min-h-0 let a grow child shrink; shrink-0 protects
424
- * a fixed-size child. All three are plain CSS on web. */
1571
+ * zero height. The shared `* { flex-shrink: 0 }` default (RN semantics)
1572
+ * makes .shrink the opt-in for a shrinkable child; min-w-0/min-h-0 lower
1573
+ * the min-content floor so it can actually shrink, and shrink-0 remains
1574
+ * for local overrides. All four are plain CSS on web. */
425
1575
  .min-w-0 {
426
1576
  min-width: 0;
427
1577
  }
428
1578
  .min-h-0 {
429
1579
  min-height: 0;
430
1580
  }
1581
+ .shrink {
1582
+ flex-shrink: 1;
1583
+ }
431
1584
  .shrink-0 {
432
1585
  flex-shrink: 0;
433
1586
  }
@@ -462,17 +1615,25 @@ button {
462
1615
  gap: 24px;
463
1616
  }
464
1617
 
1618
+ /* line-height is REQUIRED on native: without it a Label's measured height
1619
+ misses the font's line metrics, and Android clips the descenders/bottom
1620
+ of the glyphs (observed: section-labels 21–29px bounds for 12sp text at
1621
+ 3.25x). Tailwind pairs every text-* size with a leading, same here. */
465
1622
  .text-2xl {
466
1623
  font-size: 28px;
1624
+ line-height: 36px;
467
1625
  }
468
1626
  .text-xl {
469
1627
  font-size: 20px;
1628
+ line-height: 28px;
470
1629
  }
471
1630
  .text-lg {
472
1631
  font-size: 18px;
1632
+ line-height: 28px;
473
1633
  }
474
1634
  .text-sm {
475
1635
  font-size: 13px;
1636
+ line-height: 20px;
476
1637
  }
477
1638
  .font-bold {
478
1639
  font-weight: bold;
@@ -581,6 +1742,9 @@ a.chip {
581
1742
  .vx-tab.active {
582
1743
  color: var(--color-text);
583
1744
  }
1745
+ .vx-tabicon {
1746
+ margin-right: 6px;
1747
+ }
584
1748
 
585
1749
  /* xplat-web-only:start — DOM defaults are display:block (div) and
586
1750
  inline-block (button); every flex-bearing vx- class needs an explicit
@@ -689,10 +1853,6 @@ button.vx-tab {
689
1853
  border-bottom-color: var(--color-border);
690
1854
  }
691
1855
 
692
- .vx-list {
693
- flex-grow: 1;
694
- }
695
-
696
1856
  .gap-2 {
697
1857
  gap: 8px;
698
1858
  }
@@ -700,27 +1860,16 @@ button.vx-tab {
700
1860
  /* In-window sheet — bottom-anchored panel (matches the native RootLayout
701
1861
  sheet). Layer is pointer-events:none; backdrop + panel re-enable. */
702
1862
  .vx-sheet-layer {
703
- position: fixed;
704
- inset: 0;
705
1863
  z-index: 1100;
706
- pointer-events: none;
707
1864
  }
708
1865
 
709
1866
  .vx-sheet-backdrop {
710
- position: absolute;
711
- inset: 0;
712
1867
  background: rgba(0, 0, 0, 0.4);
713
- pointer-events: auto;
714
1868
  }
715
1869
 
716
1870
  .vx-sheet {
717
- position: absolute;
718
- left: 0;
719
- right: 0;
720
- bottom: 0;
721
1871
  max-height: 85%;
722
1872
  padding: 24px;
723
- overflow: auto;
724
1873
  border-width: 1px;
725
1874
  border-color: var(--color-border);
726
1875
  border-top-left-radius: var(--radius-xl);
@@ -728,5 +1877,58 @@ button.vx-tab {
728
1877
  corner-shape: squircle;
729
1878
  background-color: var(--color-surface);
730
1879
  color: var(--color-text);
1880
+ }
1881
+
1882
+ /* xplat-web-only:start — DOM positioning + hit-testing for the sheet.
1883
+ The native leaf renders on RootLayout with its own geometry. */
1884
+ .vx-sheet-layer {
1885
+ position: fixed;
1886
+ inset: 0;
1887
+ pointer-events: none;
1888
+ }
1889
+
1890
+ .vx-sheet-backdrop,
1891
+ .vx-sheet {
1892
+ position: absolute;
1893
+ inset: 0;
731
1894
  pointer-events: auto;
732
1895
  }
1896
+
1897
+ .vx-sheet {
1898
+ top: auto;
1899
+ bottom: 0;
1900
+ overflow: auto;
1901
+ }
1902
+ /* xplat-web-only:end */
1903
+
1904
+ .vx-sheet-grabber {
1905
+ display: flex;
1906
+ align-items: center;
1907
+ justify-content: center;
1908
+ height: 28px;
1909
+ }
1910
+
1911
+ .vx-sheet-grip {
1912
+ width: 36px;
1913
+ height: 4px;
1914
+ border-radius: 999px;
1915
+ background-color: var(--color-text-secondary);
1916
+ opacity: 0.4;
1917
+ }
1918
+
1919
+ /* xplat-web-only:start — detents size the panel to the largest fraction
1920
+ (overriding the 85% cap) and overlay the grabber; native stacks it as a
1921
+ top-aligned grid child. touch-action keeps drags off native scroll. */
1922
+ .vx-sheet-detents {
1923
+ max-height: none;
1924
+ }
1925
+ .vx-sheet-detents > .vx-sheet-grabber {
1926
+ position: absolute;
1927
+ top: 0;
1928
+ left: 0;
1929
+ right: 0;
1930
+ z-index: 2;
1931
+ cursor: grab;
1932
+ touch-action: none;
1933
+ }
1934
+ /* xplat-web-only:end */