@expo/ui 56.0.18 → 56.0.20

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 (413) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/expo/modules/ui/DatePickerView.kt +33 -8
  4. package/build/community/bottom-sheet/BottomSheet.android.d.ts.map +1 -1
  5. package/build/community/bottom-sheet/BottomSheet.ios.d.ts.map +1 -1
  6. package/build/community/bottom-sheet/scrollContextReset.d.ts +5 -0
  7. package/build/community/bottom-sheet/scrollContextReset.d.ts.map +1 -0
  8. package/build/community/datetime-picker/DateTimePicker.d.ts.map +1 -1
  9. package/build/community/datetime-picker/types.d.ts +2 -2
  10. package/build/community/datetime-picker/types.d.ts.map +1 -1
  11. package/build/community/masked-view/MaskedView.android.d.ts.map +1 -1
  12. package/build/community/masked-view/MaskedView.ios.d.ts.map +1 -1
  13. package/build/community/menu/types.d.ts +2 -2
  14. package/build/community/menu/types.d.ts.map +1 -1
  15. package/build/community/pager-view/types.d.ts +2 -2
  16. package/build/community/pager-view/types.d.ts.map +1 -1
  17. package/build/community/segmented-control/types.d.ts +2 -2
  18. package/build/community/segmented-control/types.d.ts.map +1 -1
  19. package/build/community/slider/types.d.ts +2 -2
  20. package/build/community/slider/types.d.ts.map +1 -1
  21. package/build/jetpack-compose/AlertDialog/index.d.ts +2 -2
  22. package/build/jetpack-compose/AlertDialog/index.d.ts.map +1 -1
  23. package/build/jetpack-compose/AnimatedVisibility/index.d.ts +2 -2
  24. package/build/jetpack-compose/AnimatedVisibility/index.d.ts.map +1 -1
  25. package/build/jetpack-compose/Badge/index.d.ts +2 -2
  26. package/build/jetpack-compose/Badge/index.d.ts.map +1 -1
  27. package/build/jetpack-compose/BadgedBox/index.d.ts +2 -2
  28. package/build/jetpack-compose/BadgedBox/index.d.ts.map +1 -1
  29. package/build/jetpack-compose/BasicAlertDialog/index.d.ts +2 -2
  30. package/build/jetpack-compose/BasicAlertDialog/index.d.ts.map +1 -1
  31. package/build/jetpack-compose/Box/index.d.ts +2 -2
  32. package/build/jetpack-compose/Box/index.d.ts.map +1 -1
  33. package/build/jetpack-compose/Button/index.d.ts +2 -2
  34. package/build/jetpack-compose/Button/index.d.ts.map +1 -1
  35. package/build/jetpack-compose/Card/index.d.ts +6 -6
  36. package/build/jetpack-compose/Card/index.d.ts.map +1 -1
  37. package/build/jetpack-compose/Carousel/index.d.ts +6 -6
  38. package/build/jetpack-compose/Carousel/index.d.ts.map +1 -1
  39. package/build/jetpack-compose/Checkbox/index.d.ts +4 -4
  40. package/build/jetpack-compose/Checkbox/index.d.ts.map +1 -1
  41. package/build/jetpack-compose/Chip/index.d.ts +8 -8
  42. package/build/jetpack-compose/Chip/index.d.ts.map +1 -1
  43. package/build/jetpack-compose/Column/index.d.ts +2 -2
  44. package/build/jetpack-compose/Column/index.d.ts.map +1 -1
  45. package/build/jetpack-compose/DatePicker/index.d.ts +6 -6
  46. package/build/jetpack-compose/DatePicker/index.d.ts.map +1 -1
  47. package/build/jetpack-compose/DockedSearchBar/index.d.ts +2 -2
  48. package/build/jetpack-compose/DockedSearchBar/index.d.ts.map +1 -1
  49. package/build/jetpack-compose/DropdownMenu/DropdownMenuItem.d.ts +2 -2
  50. package/build/jetpack-compose/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  51. package/build/jetpack-compose/DropdownMenu/index.d.ts +2 -2
  52. package/build/jetpack-compose/DropdownMenu/index.d.ts.map +1 -1
  53. package/build/jetpack-compose/ExposedDropdownMenuBox/ExposedDropdownMenu.d.ts +2 -2
  54. package/build/jetpack-compose/ExposedDropdownMenuBox/ExposedDropdownMenu.d.ts.map +1 -1
  55. package/build/jetpack-compose/ExposedDropdownMenuBox/index.d.ts +2 -2
  56. package/build/jetpack-compose/ExposedDropdownMenuBox/index.d.ts.map +1 -1
  57. package/build/jetpack-compose/FloatingActionButton/index.d.ts +8 -6
  58. package/build/jetpack-compose/FloatingActionButton/index.d.ts.map +1 -1
  59. package/build/jetpack-compose/FlowRow/index.d.ts +2 -2
  60. package/build/jetpack-compose/FlowRow/index.d.ts.map +1 -1
  61. package/build/jetpack-compose/HorizontalFloatingToolbar/index.d.ts +4 -4
  62. package/build/jetpack-compose/HorizontalFloatingToolbar/index.d.ts.map +1 -1
  63. package/build/jetpack-compose/HorizontalPager/index.d.ts +2 -2
  64. package/build/jetpack-compose/HorizontalPager/index.d.ts.map +1 -1
  65. package/build/jetpack-compose/Host/index.d.ts +2 -2
  66. package/build/jetpack-compose/Host/index.d.ts.map +1 -1
  67. package/build/jetpack-compose/Icon/index.d.ts +2 -2
  68. package/build/jetpack-compose/Icon/index.d.ts.map +1 -1
  69. package/build/jetpack-compose/IconButton/index.d.ts +2 -2
  70. package/build/jetpack-compose/IconButton/index.d.ts.map +1 -1
  71. package/build/jetpack-compose/LazyColumn/index.d.ts +2 -2
  72. package/build/jetpack-compose/LazyColumn/index.d.ts.map +1 -1
  73. package/build/jetpack-compose/LazyRow/index.d.ts +2 -2
  74. package/build/jetpack-compose/LazyRow/index.d.ts.map +1 -1
  75. package/build/jetpack-compose/ListItem/index.d.ts +2 -2
  76. package/build/jetpack-compose/ListItem/index.d.ts.map +1 -1
  77. package/build/jetpack-compose/LoadingIndicator/index.d.ts +2 -2
  78. package/build/jetpack-compose/LoadingIndicator/index.d.ts.map +1 -1
  79. package/build/jetpack-compose/ModalBottomSheet/index.d.ts +2 -2
  80. package/build/jetpack-compose/ModalBottomSheet/index.d.ts.map +1 -1
  81. package/build/jetpack-compose/MultiChoiceSegmentedButtonRow/index.d.ts +2 -2
  82. package/build/jetpack-compose/MultiChoiceSegmentedButtonRow/index.d.ts.map +1 -1
  83. package/build/jetpack-compose/NavigationBar/index.d.ts +4 -4
  84. package/build/jetpack-compose/NavigationBar/index.d.ts.map +1 -1
  85. package/build/jetpack-compose/Progress/index.d.ts +9 -8
  86. package/build/jetpack-compose/Progress/index.d.ts.map +1 -1
  87. package/build/jetpack-compose/PullToRefreshBox/index.d.ts +4 -4
  88. package/build/jetpack-compose/PullToRefreshBox/index.d.ts.map +1 -1
  89. package/build/jetpack-compose/RadioButton/index.d.ts +2 -2
  90. package/build/jetpack-compose/RadioButton/index.d.ts.map +1 -1
  91. package/build/jetpack-compose/Row/index.d.ts +2 -2
  92. package/build/jetpack-compose/Row/index.d.ts.map +1 -1
  93. package/build/jetpack-compose/SearchBar/index.d.ts +2 -2
  94. package/build/jetpack-compose/SearchBar/index.d.ts.map +1 -1
  95. package/build/jetpack-compose/SegmentedButton/index.d.ts +2 -2
  96. package/build/jetpack-compose/SegmentedButton/index.d.ts.map +1 -1
  97. package/build/jetpack-compose/Shape/index.d.ts +2 -2
  98. package/build/jetpack-compose/Shape/index.d.ts.map +1 -1
  99. package/build/jetpack-compose/SingleChoiceSegmentedButtonRow/index.d.ts +2 -2
  100. package/build/jetpack-compose/SingleChoiceSegmentedButtonRow/index.d.ts.map +1 -1
  101. package/build/jetpack-compose/Slider/index.d.ts +2 -2
  102. package/build/jetpack-compose/Slider/index.d.ts.map +1 -1
  103. package/build/jetpack-compose/Snackbar/index.d.ts +4 -4
  104. package/build/jetpack-compose/Snackbar/index.d.ts.map +1 -1
  105. package/build/jetpack-compose/Spacer/index.d.ts +2 -2
  106. package/build/jetpack-compose/Spacer/index.d.ts.map +1 -1
  107. package/build/jetpack-compose/Surface/index.d.ts +2 -2
  108. package/build/jetpack-compose/Surface/index.d.ts.map +1 -1
  109. package/build/jetpack-compose/Switch/index.d.ts +2 -2
  110. package/build/jetpack-compose/Switch/index.d.ts.map +1 -1
  111. package/build/jetpack-compose/SyncSwitch/index.d.ts +2 -2
  112. package/build/jetpack-compose/SyncSwitch/index.d.ts.map +1 -1
  113. package/build/jetpack-compose/Text/index.d.ts +2 -2
  114. package/build/jetpack-compose/Text/index.d.ts.map +1 -1
  115. package/build/jetpack-compose/TextField/BasicTextField.d.ts +2 -2
  116. package/build/jetpack-compose/TextField/BasicTextField.d.ts.map +1 -1
  117. package/build/jetpack-compose/TextField/TextField.d.ts +4 -4
  118. package/build/jetpack-compose/TextField/TextField.d.ts.map +1 -1
  119. package/build/jetpack-compose/ToggleButton/index.d.ts +2 -2
  120. package/build/jetpack-compose/ToggleButton/index.d.ts.map +1 -1
  121. package/build/jetpack-compose/Tooltip/index.d.ts +6 -6
  122. package/build/jetpack-compose/Tooltip/index.d.ts.map +1 -1
  123. package/build/swift-ui/AccessoryWidgetBackground/index.d.ts +2 -1
  124. package/build/swift-ui/AccessoryWidgetBackground/index.d.ts.map +1 -1
  125. package/build/swift-ui/Alert/index.d.ts +2 -2
  126. package/build/swift-ui/Alert/index.d.ts.map +1 -1
  127. package/build/swift-ui/BottomSheet/index.d.ts +2 -2
  128. package/build/swift-ui/BottomSheet/index.d.ts.map +1 -1
  129. package/build/swift-ui/Button/index.d.ts +2 -2
  130. package/build/swift-ui/Button/index.d.ts.map +1 -1
  131. package/build/swift-ui/Chart/index.d.ts +2 -2
  132. package/build/swift-ui/Chart/index.d.ts.map +1 -1
  133. package/build/swift-ui/ColorPicker/index.d.ts +2 -2
  134. package/build/swift-ui/ColorPicker/index.d.ts.map +1 -1
  135. package/build/swift-ui/ConfirmationDialog/index.d.ts +2 -2
  136. package/build/swift-ui/ConfirmationDialog/index.d.ts.map +1 -1
  137. package/build/swift-ui/ContextMenu/types.d.ts +4 -4
  138. package/build/swift-ui/ContextMenu/types.d.ts.map +1 -1
  139. package/build/swift-ui/DatePicker/index.d.ts +2 -2
  140. package/build/swift-ui/DatePicker/index.d.ts.map +1 -1
  141. package/build/swift-ui/Divider/index.d.ts +2 -1
  142. package/build/swift-ui/Divider/index.d.ts.map +1 -1
  143. package/build/swift-ui/Gauge/index.d.ts +2 -2
  144. package/build/swift-ui/Gauge/index.d.ts.map +1 -1
  145. package/build/swift-ui/GlassEffectContainer/index.d.ts +2 -2
  146. package/build/swift-ui/GlassEffectContainer/index.d.ts.map +1 -1
  147. package/build/swift-ui/Grid/index.d.ts +2 -2
  148. package/build/swift-ui/Grid/index.d.ts.map +1 -1
  149. package/build/swift-ui/HStack/index.d.ts +2 -2
  150. package/build/swift-ui/HStack/index.d.ts.map +1 -1
  151. package/build/swift-ui/Host/index.d.ts +9 -3
  152. package/build/swift-ui/Host/index.d.ts.map +1 -1
  153. package/build/swift-ui/Label/index.d.ts +2 -2
  154. package/build/swift-ui/Label/index.d.ts.map +1 -1
  155. package/build/swift-ui/LabeledContent/index.d.ts +2 -2
  156. package/build/swift-ui/LabeledContent/index.d.ts.map +1 -1
  157. package/build/swift-ui/LazyHStack/index.d.ts +2 -2
  158. package/build/swift-ui/LazyHStack/index.d.ts.map +1 -1
  159. package/build/swift-ui/LazyVStack/index.d.ts +2 -2
  160. package/build/swift-ui/LazyVStack/index.d.ts.map +1 -1
  161. package/build/swift-ui/Link/index.d.ts +2 -2
  162. package/build/swift-ui/Link/index.d.ts.map +1 -1
  163. package/build/swift-ui/List/ListForEach.d.ts +2 -2
  164. package/build/swift-ui/List/ListForEach.d.ts.map +1 -1
  165. package/build/swift-ui/Mask/index.d.ts +2 -2
  166. package/build/swift-ui/Mask/index.d.ts.map +1 -1
  167. package/build/swift-ui/Menu/types.d.ts +2 -2
  168. package/build/swift-ui/Menu/types.d.ts.map +1 -1
  169. package/build/swift-ui/Namespace.d.ts +2 -2
  170. package/build/swift-ui/Namespace.d.ts.map +1 -1
  171. package/build/swift-ui/Overlay/index.d.ts +2 -2
  172. package/build/swift-ui/Overlay/index.d.ts.map +1 -1
  173. package/build/swift-ui/Popover/index.d.ts +2 -2
  174. package/build/swift-ui/Popover/index.d.ts.map +1 -1
  175. package/build/swift-ui/ProgressView/index.d.ts +2 -2
  176. package/build/swift-ui/ProgressView/index.d.ts.map +1 -1
  177. package/build/swift-ui/RNHostView.d.ts +2 -2
  178. package/build/swift-ui/RNHostView.d.ts.map +1 -1
  179. package/build/swift-ui/ScrollView/index.d.ts +2 -2
  180. package/build/swift-ui/ScrollView/index.d.ts.map +1 -1
  181. package/build/swift-ui/Section/index.d.ts +2 -2
  182. package/build/swift-ui/Section/index.d.ts.map +1 -1
  183. package/build/swift-ui/SecureField/index.d.ts +2 -2
  184. package/build/swift-ui/SecureField/index.d.ts.map +1 -1
  185. package/build/swift-ui/ShareLink/index.d.ts +2 -2
  186. package/build/swift-ui/ShareLink/index.d.ts.map +1 -1
  187. package/build/swift-ui/Slider/index.d.ts +2 -2
  188. package/build/swift-ui/Slider/index.d.ts.map +1 -1
  189. package/build/swift-ui/Stepper/index.d.ts +2 -2
  190. package/build/swift-ui/Stepper/index.d.ts.map +1 -1
  191. package/build/swift-ui/SwipeActions/index.d.ts +4 -4
  192. package/build/swift-ui/SwipeActions/index.d.ts.map +1 -1
  193. package/build/swift-ui/SyncToggle/index.d.ts +2 -2
  194. package/build/swift-ui/SyncToggle/index.d.ts.map +1 -1
  195. package/build/swift-ui/TabView/Tab.d.ts +2 -2
  196. package/build/swift-ui/TabView/Tab.d.ts.map +1 -1
  197. package/build/swift-ui/TabView/index.d.ts +2 -2
  198. package/build/swift-ui/TabView/index.d.ts.map +1 -1
  199. package/build/swift-ui/TextField/index.d.ts +2 -2
  200. package/build/swift-ui/TextField/index.d.ts.map +1 -1
  201. package/build/swift-ui/Toggle/index.d.ts +2 -2
  202. package/build/swift-ui/Toggle/index.d.ts.map +1 -1
  203. package/build/swift-ui/VStack/index.d.ts +2 -2
  204. package/build/swift-ui/VStack/index.d.ts.map +1 -1
  205. package/build/swift-ui/ZStack/index.d.ts +2 -2
  206. package/build/swift-ui/ZStack/index.d.ts.map +1 -1
  207. package/build/swift-ui/modifiers/index.d.ts +107 -1
  208. package/build/swift-ui/modifiers/index.d.ts.map +1 -1
  209. package/build/swift-ui/modifiers/presentationModifiers.d.ts +19 -0
  210. package/build/swift-ui/modifiers/presentationModifiers.d.ts.map +1 -1
  211. package/build/universal/Button/index.d.ts.map +1 -1
  212. package/build/universal/Checkbox/index.d.ts.map +1 -1
  213. package/build/universal/Collapsible/index.d.ts.map +1 -1
  214. package/build/universal/FieldGroup/FieldGroup.d.ts.map +1 -1
  215. package/build/universal/FieldGroup/FieldSection.d.ts.map +1 -1
  216. package/build/universal/Host/index.d.ts +1 -2
  217. package/build/universal/Host/index.d.ts.map +1 -1
  218. package/build/universal/Host/types.d.ts +16 -2
  219. package/build/universal/Host/types.d.ts.map +1 -1
  220. package/build/universal/ListItem/ListItem.android.d.ts.map +1 -1
  221. package/build/universal/ListItem/ListItem.ios.d.ts.map +1 -1
  222. package/build/universal/ListItem/types.d.ts +8 -0
  223. package/build/universal/ListItem/types.d.ts.map +1 -1
  224. package/build/universal/Picker/Picker.d.ts.map +1 -1
  225. package/build/universal/Slider/index.d.ts.map +1 -1
  226. package/build/universal/Switch/index.d.ts.map +1 -1
  227. package/build/universal/TextInput/index.d.ts.map +1 -1
  228. package/build/universal/hooks.d.ts +11 -0
  229. package/build/universal/hooks.d.ts.map +1 -1
  230. package/build/universal/keyboardEvent.fx.d.ts +2 -0
  231. package/build/universal/keyboardEvent.fx.d.ts.map +1 -0
  232. package/build/universal/webUtils.d.ts +66 -0
  233. package/build/universal/webUtils.d.ts.map +1 -0
  234. package/expo-module.config.json +1 -1
  235. package/ios/HostView.swift +15 -0
  236. package/ios/Modifiers/PresentationModifiers.swift +30 -0
  237. package/ios/Modifiers/ShapeTypes.swift +50 -0
  238. package/ios/Modifiers/ViewModifierRegistry.swift +259 -11
  239. package/ios/Modifiers/WidgetModifiers.swift +1 -1
  240. package/ios/RNHostView.swift +5 -0
  241. package/ios/TextFieldView.swift +29 -1
  242. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.18/expo.modules.ui-56.0.18-sources.jar → 56.0.20/expo.modules.ui-56.0.20-sources.jar} +0 -0
  243. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20-sources.jar.md5 +1 -0
  244. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20-sources.jar.sha1 +1 -0
  245. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20-sources.jar.sha256 +1 -0
  246. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20-sources.jar.sha512 +1 -0
  247. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.aar +0 -0
  248. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.aar.md5 +1 -0
  249. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.aar.sha1 +1 -0
  250. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.aar.sha256 +1 -0
  251. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.aar.sha512 +1 -0
  252. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.18/expo.modules.ui-56.0.18.module → 56.0.20/expo.modules.ui-56.0.20.module} +22 -22
  253. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.module.md5 +1 -0
  254. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.module.sha1 +1 -0
  255. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.module.sha256 +1 -0
  256. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.module.sha512 +1 -0
  257. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.18/expo.modules.ui-56.0.18.pom → 56.0.20/expo.modules.ui-56.0.20.pom} +1 -1
  258. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.pom.md5 +1 -0
  259. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.pom.sha1 +1 -0
  260. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.pom.sha256 +1 -0
  261. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.20/expo.modules.ui-56.0.20.pom.sha512 +1 -0
  262. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
  263. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
  264. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
  265. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
  266. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
  267. package/package.json +5 -9
  268. package/plugin/tsconfig.tsbuildinfo +1 -0
  269. package/src/State/index.fx.ts +4 -5
  270. package/src/community/bottom-sheet/BottomSheet.android.tsx +6 -1
  271. package/src/community/bottom-sheet/BottomSheet.ios.tsx +8 -4
  272. package/src/community/bottom-sheet/scrollContextReset.tsx +24 -0
  273. package/src/community/datetime-picker/DateTimePicker.tsx +9 -1
  274. package/src/community/datetime-picker/types.tsx +2 -2
  275. package/src/community/masked-view/MaskedView.android.tsx +5 -2
  276. package/src/community/masked-view/MaskedView.ios.tsx +5 -2
  277. package/src/community/menu/types.tsx +2 -2
  278. package/src/community/pager-view/types.tsx +2 -2
  279. package/src/community/segmented-control/types.tsx +2 -2
  280. package/src/community/slider/types.tsx +2 -2
  281. package/src/jetpack-compose/AlertDialog/index.tsx +2 -2
  282. package/src/jetpack-compose/AnimatedVisibility/index.tsx +2 -2
  283. package/src/jetpack-compose/Badge/index.tsx +2 -2
  284. package/src/jetpack-compose/BadgedBox/index.tsx +2 -2
  285. package/src/jetpack-compose/BasicAlertDialog/index.tsx +2 -2
  286. package/src/jetpack-compose/Box/index.tsx +2 -2
  287. package/src/jetpack-compose/Button/index.tsx +2 -2
  288. package/src/jetpack-compose/Card/index.tsx +6 -6
  289. package/src/jetpack-compose/Carousel/index.tsx +6 -6
  290. package/src/jetpack-compose/Checkbox/index.tsx +4 -4
  291. package/src/jetpack-compose/Chip/index.tsx +8 -8
  292. package/src/jetpack-compose/Column/index.tsx +2 -2
  293. package/src/jetpack-compose/DatePicker/index.tsx +6 -6
  294. package/src/jetpack-compose/DockedSearchBar/index.tsx +2 -2
  295. package/src/jetpack-compose/DropdownMenu/DropdownMenuItem.tsx +2 -2
  296. package/src/jetpack-compose/DropdownMenu/index.tsx +2 -2
  297. package/src/jetpack-compose/ExposedDropdownMenuBox/ExposedDropdownMenu.tsx +2 -2
  298. package/src/jetpack-compose/ExposedDropdownMenuBox/index.tsx +2 -2
  299. package/src/jetpack-compose/FloatingActionButton/index.tsx +6 -6
  300. package/src/jetpack-compose/FlowRow/index.tsx +2 -2
  301. package/src/jetpack-compose/HorizontalFloatingToolbar/index.tsx +4 -4
  302. package/src/jetpack-compose/HorizontalPager/index.tsx +2 -2
  303. package/src/jetpack-compose/Host/index.tsx +2 -2
  304. package/src/jetpack-compose/Icon/index.tsx +2 -2
  305. package/src/jetpack-compose/IconButton/index.tsx +2 -2
  306. package/src/jetpack-compose/LazyColumn/index.tsx +2 -2
  307. package/src/jetpack-compose/LazyRow/index.tsx +2 -2
  308. package/src/jetpack-compose/ListItem/index.tsx +2 -2
  309. package/src/jetpack-compose/LoadingIndicator/index.tsx +2 -2
  310. package/src/jetpack-compose/ModalBottomSheet/index.tsx +2 -2
  311. package/src/jetpack-compose/MultiChoiceSegmentedButtonRow/index.tsx +2 -2
  312. package/src/jetpack-compose/NavigationBar/index.tsx +4 -4
  313. package/src/jetpack-compose/Progress/index.tsx +7 -7
  314. package/src/jetpack-compose/PullToRefreshBox/index.tsx +4 -4
  315. package/src/jetpack-compose/RadioButton/index.tsx +2 -2
  316. package/src/jetpack-compose/Row/index.tsx +2 -2
  317. package/src/jetpack-compose/SearchBar/index.tsx +2 -2
  318. package/src/jetpack-compose/SegmentedButton/index.tsx +2 -2
  319. package/src/jetpack-compose/Shape/index.tsx +2 -2
  320. package/src/jetpack-compose/SingleChoiceSegmentedButtonRow/index.tsx +2 -2
  321. package/src/jetpack-compose/Slider/index.tsx +2 -2
  322. package/src/jetpack-compose/Snackbar/index.tsx +4 -4
  323. package/src/jetpack-compose/Spacer/index.tsx +2 -2
  324. package/src/jetpack-compose/Surface/index.tsx +2 -2
  325. package/src/jetpack-compose/Switch/index.tsx +2 -2
  326. package/src/jetpack-compose/SyncSwitch/index.tsx +2 -2
  327. package/src/jetpack-compose/Text/index.tsx +2 -2
  328. package/src/jetpack-compose/TextField/BasicTextField.tsx +2 -2
  329. package/src/jetpack-compose/TextField/TextField.tsx +4 -4
  330. package/src/jetpack-compose/ToggleButton/index.tsx +2 -2
  331. package/src/jetpack-compose/Tooltip/index.tsx +6 -6
  332. package/src/swift-ui/AccessoryWidgetBackground/index.tsx +1 -1
  333. package/src/swift-ui/Alert/index.tsx +2 -2
  334. package/src/swift-ui/BottomSheet/index.tsx +2 -2
  335. package/src/swift-ui/Button/index.tsx +2 -2
  336. package/src/swift-ui/Chart/index.tsx +2 -2
  337. package/src/swift-ui/ColorPicker/index.tsx +2 -2
  338. package/src/swift-ui/ConfirmationDialog/index.tsx +2 -2
  339. package/src/swift-ui/ContextMenu/types.ts +4 -4
  340. package/src/swift-ui/DatePicker/index.tsx +2 -2
  341. package/src/swift-ui/Divider/index.tsx +1 -1
  342. package/src/swift-ui/Gauge/index.tsx +2 -2
  343. package/src/swift-ui/GlassEffectContainer/index.tsx +2 -2
  344. package/src/swift-ui/Grid/index.tsx +2 -2
  345. package/src/swift-ui/HStack/index.tsx +2 -2
  346. package/src/swift-ui/Host/index.tsx +12 -3
  347. package/src/swift-ui/Label/index.tsx +2 -2
  348. package/src/swift-ui/LabeledContent/index.tsx +2 -2
  349. package/src/swift-ui/LazyHStack/index.tsx +2 -2
  350. package/src/swift-ui/LazyVStack/index.tsx +2 -2
  351. package/src/swift-ui/Link/index.tsx +2 -2
  352. package/src/swift-ui/List/ListForEach.tsx +2 -2
  353. package/src/swift-ui/Mask/index.tsx +2 -2
  354. package/src/swift-ui/Menu/types.ts +2 -2
  355. package/src/swift-ui/Namespace.tsx +2 -2
  356. package/src/swift-ui/Overlay/index.tsx +2 -2
  357. package/src/swift-ui/Popover/index.tsx +2 -2
  358. package/src/swift-ui/ProgressView/index.tsx +2 -2
  359. package/src/swift-ui/RNHostView.tsx +2 -2
  360. package/src/swift-ui/ScrollView/index.tsx +2 -2
  361. package/src/swift-ui/Section/index.tsx +2 -2
  362. package/src/swift-ui/SecureField/index.tsx +2 -2
  363. package/src/swift-ui/ShareLink/index.tsx +2 -2
  364. package/src/swift-ui/Slider/index.tsx +2 -2
  365. package/src/swift-ui/Stepper/index.tsx +2 -2
  366. package/src/swift-ui/SwipeActions/index.tsx +4 -4
  367. package/src/swift-ui/SyncToggle/index.tsx +2 -2
  368. package/src/swift-ui/TabView/Tab.tsx +2 -2
  369. package/src/swift-ui/TabView/index.tsx +2 -2
  370. package/src/swift-ui/TextField/index.tsx +2 -2
  371. package/src/swift-ui/Toggle/index.tsx +2 -2
  372. package/src/swift-ui/VStack/index.tsx +2 -2
  373. package/src/swift-ui/ZStack/index.tsx +2 -2
  374. package/src/swift-ui/modifiers/index.ts +161 -0
  375. package/src/swift-ui/modifiers/presentationModifiers.ts +22 -0
  376. package/src/ts-declarations/react-native-web.d.ts +31 -3
  377. package/src/universal/Button/index.tsx +83 -35
  378. package/src/universal/Checkbox/index.tsx +85 -30
  379. package/src/universal/Collapsible/index.tsx +5 -17
  380. package/src/universal/FieldGroup/FieldGroup.tsx +5 -15
  381. package/src/universal/FieldGroup/FieldSection.tsx +14 -31
  382. package/src/universal/Host/index.tsx +44 -30
  383. package/src/universal/Host/types.ts +17 -2
  384. package/src/universal/ListItem/ListItem.android.tsx +10 -2
  385. package/src/universal/ListItem/ListItem.ios.tsx +23 -6
  386. package/src/universal/ListItem/types.ts +10 -0
  387. package/src/universal/Picker/Picker.tsx +74 -29
  388. package/src/universal/Slider/index.tsx +90 -9
  389. package/src/universal/Switch/index.android.tsx +2 -2
  390. package/src/universal/Switch/index.tsx +77 -18
  391. package/src/universal/TextInput/index.tsx +49 -13
  392. package/src/universal/hooks.ts +25 -1
  393. package/src/universal/keyboardEvent.fx.ts +28 -0
  394. package/src/universal/webUtils.ts +245 -0
  395. package/CLAUDE.md +0 -54
  396. package/CONTRIBUTING.md +0 -30
  397. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18-sources.jar.md5 +0 -1
  398. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18-sources.jar.sha1 +0 -1
  399. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18-sources.jar.sha256 +0 -1
  400. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18-sources.jar.sha512 +0 -1
  401. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.aar +0 -0
  402. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.aar.md5 +0 -1
  403. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.aar.sha1 +0 -1
  404. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.aar.sha256 +0 -1
  405. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.aar.sha512 +0 -1
  406. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.module.md5 +0 -1
  407. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.module.sha1 +0 -1
  408. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.module.sha256 +0 -1
  409. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.module.sha512 +0 -1
  410. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.pom.md5 +0 -1
  411. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.pom.sha1 +0 -1
  412. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.pom.sha256 +0 -1
  413. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.18/expo.modules.ui-56.0.18.pom.sha512 +0 -1
@@ -218,4 +218,34 @@ internal struct PresentationBackgroundModifier: ViewModifier, Record {
218
218
  content
219
219
  }
220
220
  }
221
+ }
222
+
223
+ // MARK: - Presentation Sizing
224
+
225
+ internal enum PresentationSizingOption: String, Enumerable {
226
+ case automatic
227
+ case fitted
228
+ case form
229
+ case page
230
+ }
231
+
232
+ internal struct PresentationSizingModifier: ViewModifier, Record {
233
+ @Field var sizing: PresentationSizingOption = .automatic
234
+
235
+ func body(content: Content) -> some View {
236
+ if #available(iOS 18.0, tvOS 18.0, macOS 15.0, *) {
237
+ switch sizing {
238
+ case .automatic:
239
+ content.presentationSizing(.automatic)
240
+ case .fitted:
241
+ content.presentationSizing(.fitted)
242
+ case .form:
243
+ content.presentationSizing(.form)
244
+ case .page:
245
+ content.presentationSizing(.page)
246
+ }
247
+ } else {
248
+ content
249
+ }
250
+ }
221
251
  }
@@ -22,6 +22,56 @@ internal struct CornerSize: Record {
22
22
  @Field var height: Int = 0
23
23
  }
24
24
 
25
+ // MARK: - Stroke Style
26
+
27
+ internal enum StrokeLineCap: String, Enumerable {
28
+ case butt
29
+ case round
30
+ case square
31
+
32
+ func toCGLineCap() -> CGLineCap {
33
+ switch self {
34
+ case .butt: return .butt
35
+ case .round: return .round
36
+ case .square: return .square
37
+ }
38
+ }
39
+ }
40
+
41
+ internal enum StrokeLineJoin: String, Enumerable {
42
+ case miter
43
+ case round
44
+ case bevel
45
+
46
+ func toCGLineJoin() -> CGLineJoin {
47
+ switch self {
48
+ case .miter: return .miter
49
+ case .round: return .round
50
+ case .bevel: return .bevel
51
+ }
52
+ }
53
+ }
54
+
55
+ internal struct StrokeStyleConfig: Record {
56
+ @Field var lineWidth: CGFloat = 1
57
+ @Field var lineCap: StrokeLineCap = .butt
58
+ @Field var lineJoin: StrokeLineJoin = .miter
59
+ @Field var miterLimit: CGFloat = 10
60
+ @Field var dash: [CGFloat] = []
61
+ @Field var dashPhase: CGFloat = 0
62
+
63
+ func toStrokeStyle() -> StrokeStyle {
64
+ return StrokeStyle(
65
+ lineWidth: lineWidth,
66
+ lineCap: lineCap.toCGLineCap(),
67
+ lineJoin: lineJoin.toCGLineJoin(),
68
+ miterLimit: miterLimit,
69
+ dash: dash,
70
+ dashPhase: dashPhase
71
+ )
72
+ }
73
+ }
74
+
25
75
  // MARK: - Shape Helper Functions
26
76
 
27
77
  internal func makeCapsule(style: RoundedCornerStyle?) -> Capsule {
@@ -224,6 +224,61 @@ internal struct DisabledModifier: ViewModifier, Record {
224
224
  }
225
225
  }
226
226
 
227
+ internal enum RedactionReason: String, Enumerable {
228
+ case placeholder
229
+ case privacy
230
+ case invalidated
231
+ }
232
+
233
+ internal struct RedactedModifier: ViewModifier, Record {
234
+ @Field var reasons: [RedactionReason] = [.placeholder]
235
+
236
+ func body(content: Content) -> some View {
237
+ content.redacted(reason: resolveReasons())
238
+ }
239
+
240
+ private func resolveReasons() -> RedactionReasons {
241
+ var set: RedactionReasons = []
242
+ for reason in reasons {
243
+ switch reason {
244
+ case .placeholder: set.insert(.placeholder)
245
+ case .privacy: set.insert(.privacy)
246
+ case .invalidated:
247
+ if #available(iOS 17.0, tvOS 17.0, macOS 14.0, *) {
248
+ set.insert(.invalidated)
249
+ }
250
+ }
251
+ }
252
+ return set
253
+ }
254
+ }
255
+
256
+ internal struct UnredactedModifier: ViewModifier, Record {
257
+ func body(content: Content) -> some View {
258
+ content.unredacted()
259
+ }
260
+ }
261
+
262
+ internal struct PrivacySensitiveModifier: ViewModifier, Record {
263
+ @Field var sensitive: Bool = true
264
+
265
+ func body(content: Content) -> some View {
266
+ content.privacySensitive(sensitive)
267
+ }
268
+ }
269
+
270
+ internal struct InvalidatableContentModifier: ViewModifier, Record {
271
+ @Field var invalidatable: Bool = true
272
+
273
+ func body(content: Content) -> some View {
274
+ if #available(iOS 17.0, tvOS 17.0, macOS 14.0, *) {
275
+ content.invalidatableContent(invalidatable)
276
+ } else {
277
+ content
278
+ }
279
+ }
280
+ }
281
+
227
282
  internal struct ZIndexModifier: ViewModifier, Record {
228
283
  @Field var index: Double = 0
229
284
 
@@ -318,6 +373,48 @@ internal struct ClipShapeModifier: ViewModifier, Record {
318
373
  }
319
374
  }
320
375
 
376
+ internal struct StrokeBorderModifier: ViewModifier, Record {
377
+ @Field var color: Color?
378
+ @Field var style: StrokeStyleConfig?
379
+ @Field var antialiased: Bool = true
380
+ @Field var shape: ShapeType = .rectangle
381
+ @Field var cornerRadius: CGFloat = 8
382
+ @Field var roundedCornerStyle: RoundedCornerStyle?
383
+ @Field var cornerSize: CornerSize?
384
+
385
+ func body(content: Content) -> some View {
386
+ content.overlay(strokeBorderView())
387
+ }
388
+
389
+ @ViewBuilder
390
+ private func strokeBorderView() -> some View {
391
+ let strokeStyle = (style ?? StrokeStyleConfig()).toStrokeStyle()
392
+ switch shape {
393
+ case .capsule:
394
+ applyStrokeBorder(makeCapsule(style: roundedCornerStyle), strokeStyle)
395
+ case .circle:
396
+ applyStrokeBorder(Circle(), strokeStyle)
397
+ case .containerRelativeShape:
398
+ applyStrokeBorder(ContainerRelativeShape(), strokeStyle)
399
+ case .ellipse:
400
+ applyStrokeBorder(Ellipse(), strokeStyle)
401
+ case .rectangle:
402
+ applyStrokeBorder(Rectangle(), strokeStyle)
403
+ case .roundedRectangle:
404
+ applyStrokeBorder(makeRoundedRectangle(cornerRadius: cornerRadius, cornerSize: cornerSize, style: roundedCornerStyle), strokeStyle)
405
+ }
406
+ }
407
+
408
+ @ViewBuilder
409
+ private func applyStrokeBorder<S: InsettableShape>(_ shape: S, _ strokeStyle: StrokeStyle) -> some View {
410
+ if let color {
411
+ shape.strokeBorder(color, style: strokeStyle, antialiased: antialiased)
412
+ } else {
413
+ shape.strokeBorder(style: strokeStyle, antialiased: antialiased)
414
+ }
415
+ }
416
+ }
417
+
321
418
  internal struct OnTapGestureModifier: ViewModifier, Record {
322
419
  var eventDispatcher: EventDispatcher?
323
420
 
@@ -518,6 +615,122 @@ internal struct AccessibilityHiddenModifier: ViewModifier, Record {
518
615
  }
519
616
  }
520
617
 
618
+ internal enum AccessibilityChildBehaviorType: String, Enumerable {
619
+ case ignore
620
+ case combine
621
+ case contain
622
+
623
+ func toNative() -> AccessibilityChildBehavior {
624
+ switch self {
625
+ case .ignore:
626
+ return .ignore
627
+ case .combine:
628
+ return .combine
629
+ case .contain:
630
+ return .contain
631
+ }
632
+ }
633
+ }
634
+
635
+ internal struct AccessibilityElementModifier: ViewModifier, Record {
636
+ @Field var children: AccessibilityChildBehaviorType = .ignore
637
+
638
+ func body(content: Content) -> some View {
639
+ content.accessibilityElement(children: children.toNative())
640
+ }
641
+ }
642
+
643
+ internal enum AccessibilityTraitType: String, Enumerable {
644
+ case isButton
645
+ case isHeader
646
+ case isImage
647
+ case isSelected
648
+ case isLink
649
+ case isModal
650
+ case isSummaryElement
651
+ case updatesFrequently
652
+ case startsMediaSession
653
+ case allowsDirectInteraction
654
+ case causesPageTurn
655
+ case isToggle
656
+ case playsSound
657
+ case isStaticText
658
+ case isSearchField
659
+ case isKeyboardKey
660
+ case isTabBar
661
+
662
+ func toNative() -> AccessibilityTraits? {
663
+ switch self {
664
+ case .isButton:
665
+ return .isButton
666
+ case .isHeader:
667
+ return .isHeader
668
+ case .isImage:
669
+ return .isImage
670
+ case .isSelected:
671
+ return .isSelected
672
+ case .isLink:
673
+ return .isLink
674
+ case .isModal:
675
+ return .isModal
676
+ case .isSummaryElement:
677
+ return .isSummaryElement
678
+ case .updatesFrequently:
679
+ return .updatesFrequently
680
+ case .startsMediaSession:
681
+ return .startsMediaSession
682
+ case .allowsDirectInteraction:
683
+ return .allowsDirectInteraction
684
+ case .causesPageTurn:
685
+ return .causesPageTurn
686
+ case .isToggle:
687
+ if #available(iOS 17.0, tvOS 17.0, macOS 14.0, *) {
688
+ return .isToggle
689
+ }
690
+ return nil
691
+ case .playsSound:
692
+ return .playsSound
693
+ case .isStaticText:
694
+ return .isStaticText
695
+ case .isSearchField:
696
+ return .isSearchField
697
+ case .isKeyboardKey:
698
+ return .isKeyboardKey
699
+ case .isTabBar:
700
+ if #available(iOS 17.0, tvOS 17.0, macOS 14.0, *) {
701
+ return .isTabBar
702
+ }
703
+ return nil
704
+ }
705
+ }
706
+ }
707
+
708
+ internal func combineAccessibilityTraits(_ traits: [AccessibilityTraitType]) -> AccessibilityTraits {
709
+ var combined: AccessibilityTraits = []
710
+ for trait in traits {
711
+ if let native = trait.toNative() {
712
+ combined.formUnion(native)
713
+ }
714
+ }
715
+ return combined
716
+ }
717
+
718
+ internal struct AccessibilityAddTraitsModifier: ViewModifier, Record {
719
+ @Field var traits: [AccessibilityTraitType] = []
720
+
721
+ func body(content: Content) -> some View {
722
+ content.accessibilityAddTraits(combineAccessibilityTraits(traits))
723
+ }
724
+ }
725
+
726
+ internal struct AccessibilityRemoveTraitsModifier: ViewModifier, Record {
727
+ @Field var traits: [AccessibilityTraitType] = []
728
+
729
+ func body(content: Content) -> some View {
730
+ content.accessibilityRemoveTraits(combineAccessibilityTraits(traits))
731
+ }
732
+ }
733
+
521
734
  internal struct LayoutPriorityModifier: ViewModifier, Record {
522
735
  @Field var priority: Double = 0
523
736
 
@@ -978,21 +1191,21 @@ internal struct HeaderProminence: ViewModifier, Record {
978
1191
  }
979
1192
 
980
1193
  internal struct ListRowInsets: ViewModifier, Record {
981
- @Field var top: CGFloat = 0
982
- @Field var leading: CGFloat = 0
983
- @Field var bottom: CGFloat = 0
984
- @Field var trailing: CGFloat = 0
1194
+ @Field var top: CGFloat?
1195
+ @Field var leading: CGFloat?
1196
+ @Field var bottom: CGFloat?
1197
+ @Field var trailing: CGFloat?
985
1198
 
986
1199
  func body(content: Content) -> some View {
987
- if top != 0 || leading != 0 || bottom != 0 || trailing != 0 {
1200
+ if top == nil && leading == nil && bottom == nil && trailing == nil {
1201
+ content
1202
+ } else {
988
1203
  content.listRowInsets(.init(
989
- top: top,
990
- leading: leading,
991
- bottom: bottom,
992
- trailing: trailing
1204
+ top: top ?? 0,
1205
+ leading: leading ?? 0,
1206
+ bottom: bottom ?? 0,
1207
+ trailing: trailing ?? 0
993
1208
  ))
994
- } else {
995
- content
996
1209
  }
997
1210
  }
998
1211
  }
@@ -1508,6 +1721,22 @@ extension ViewModifierRegistry {
1508
1721
  return try DisabledModifier(from: params, appContext: appContext)
1509
1722
  }
1510
1723
 
1724
+ register("redacted") { params, appContext, _ in
1725
+ return try RedactedModifier(from: params, appContext: appContext)
1726
+ }
1727
+
1728
+ register("unredacted") { params, appContext, _ in
1729
+ return try UnredactedModifier(from: params, appContext: appContext)
1730
+ }
1731
+
1732
+ register("privacySensitive") { params, appContext, _ in
1733
+ return try PrivacySensitiveModifier(from: params, appContext: appContext)
1734
+ }
1735
+
1736
+ register("invalidatableContent") { params, appContext, _ in
1737
+ return try InvalidatableContentModifier(from: params, appContext: appContext)
1738
+ }
1739
+
1511
1740
  register("zIndex") { params, appContext, _ in
1512
1741
  return try ZIndexModifier(from: params, appContext: appContext)
1513
1742
  }
@@ -1539,6 +1768,9 @@ extension ViewModifierRegistry {
1539
1768
  register("border") { params, appContext, _ in
1540
1769
  return try BorderModifier(from: params, appContext: appContext)
1541
1770
  }
1771
+ register("strokeBorder") { params, appContext, _ in
1772
+ return try StrokeBorderModifier(from: params, appContext: appContext)
1773
+ }
1542
1774
 
1543
1775
  register("clipShape") { params, appContext, _ in
1544
1776
  return try ClipShapeModifier(from: params, appContext: appContext)
@@ -1596,6 +1828,18 @@ extension ViewModifierRegistry {
1596
1828
  return try AccessibilityHiddenModifier(from: params, appContext: appContext)
1597
1829
  }
1598
1830
 
1831
+ register("accessibilityElement") { params, appContext, _ in
1832
+ return try AccessibilityElementModifier(from: params, appContext: appContext)
1833
+ }
1834
+
1835
+ register("accessibilityAddTraits") { params, appContext, _ in
1836
+ return try AccessibilityAddTraitsModifier(from: params, appContext: appContext)
1837
+ }
1838
+
1839
+ register("accessibilityRemoveTraits") { params, appContext, _ in
1840
+ return try AccessibilityRemoveTraitsModifier(from: params, appContext: appContext)
1841
+ }
1842
+
1599
1843
  register("layoutPriority") { params, appContext, _ in
1600
1844
  return try LayoutPriorityModifier(from: params, appContext: appContext)
1601
1845
  }
@@ -1892,6 +2136,10 @@ extension ViewModifierRegistry {
1892
2136
  return try PresentationBackgroundModifier(from: params, appContext: appContext)
1893
2137
  }
1894
2138
 
2139
+ register("presentationSizing") { params, appContext, _ in
2140
+ return try PresentationSizingModifier(from: params, appContext: appContext)
2141
+ }
2142
+
1895
2143
  register("listStyle") { params, appContext, _ in
1896
2144
  return try ListStyleModifier(from: params, appContext: appContext)
1897
2145
  }
@@ -61,7 +61,7 @@ internal struct ActivityBackgroundTintModifier: ViewModifier, Record {
61
61
  @Field var color: Color?
62
62
 
63
63
  func body(content: Content) -> some View {
64
- #if !os(tvOS) && !os(macOS)
64
+ #if !os(tvOS) && !os(macOS) && !targetEnvironment(macCatalyst)
65
65
  content.activityBackgroundTint(color)
66
66
  #else
67
67
  content
@@ -19,6 +19,11 @@ struct RNHostView: ExpoSwiftUI.View {
19
19
  .onAppear {
20
20
  ExpoUITouchHandlerHelper.createAndAttachTouchHandler(for: childUIView)
21
21
  }
22
+ } else if props.matchContents {
23
+ // No hosted UIView (a pure SwiftUI child, e.g. Text/Image). Render it at its
24
+ // natural size instead of falling into the fill branch below, which would
25
+ // stretch a self-sizing SwiftUI view to fill its container.
26
+ Children()
22
27
  } else {
23
28
  Children()
24
29
  .frame(maxWidth: .infinity, maxHeight: .infinity)
@@ -219,11 +219,39 @@ private struct StatefulSelectableTextField: View {
219
219
  )
220
220
  }
221
221
 
222
+ private var selectionBinding: Binding<SwiftUI.TextSelection?> {
223
+ if #available(iOS 26.0, macOS 26.0, tvOS 26.0, *) {
224
+ return $localSelection
225
+ }
226
+ return clampedSelectionBinding
227
+ }
228
+
229
+ // iOS 18 SwiftUI can throw an out-of-bounds exception when selection becomes invalid after text is changed programmatically.
230
+ // Resetting to nil avoids passing SwiftUI the stale selection.
231
+ // https://github.com/expo/expo/issues/47434
232
+ // https://github.com/swiftlang/swift/issues/82359#issuecomment-3038538035
233
+ private var clampedSelectionBinding: Binding<SwiftUI.TextSelection?> {
234
+ Binding(
235
+ get: {
236
+ guard let selection = localSelection,
237
+ case let .selection(range) = selection.indices else {
238
+ return localSelection
239
+ }
240
+ let text = (state.value as? String) ?? ""
241
+ if range.lowerBound > text.endIndex || range.upperBound > text.endIndex {
242
+ return nil
243
+ }
244
+ return localSelection
245
+ },
246
+ set: { localSelection = $0 }
247
+ )
248
+ }
249
+
222
250
  var body: some View {
223
251
  TextField(
224
252
  promptText == nil ? props.placeholder : "",
225
253
  text: textBinding,
226
- selection: $localSelection,
254
+ selection: selectionBinding,
227
255
  prompt: promptText,
228
256
  axis: swiftUIAxis
229
257
  )
@@ -0,0 +1 @@
1
+ 1b9fff22820c7fb50e59d2033ae3199e9fa2c5c853138629a6e2767f50f7ab2f
@@ -0,0 +1 @@
1
+ 50b75ddd02eccceb55f0e7985344e58796d0636802fd81e940f357ed55f87bbf889edebad6dc727c1a677082928b67e6453595aaf809ada12871779e5e313978
@@ -0,0 +1 @@
1
+ 4d91a04542a27e40a7866b4e63f804293ff372b1
@@ -0,0 +1 @@
1
+ 11705a42f0bda49ba0f6ca5f38214e9e98afea5ae6fe34954e06076cd8daf7e8
@@ -0,0 +1 @@
1
+ 33c0e88d0bb46e4e00f4916b859f78327081ff3995fb3340e132489c0898a61229aad5989455279a06d2a52a0e8be4945942602d3a231fc5d0cd930bb8b04a66
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.ui",
5
5
  "module": "expo.modules.ui",
6
- "version": "56.0.18",
6
+ "version": "56.0.20",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,13 +24,13 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.ui-56.0.18.aar",
28
- "url": "expo.modules.ui-56.0.18.aar",
29
- "size": 1944191,
30
- "sha512": "d10bffe2657a8f7e5e1886eec9a1404d7b6d5bcef4a50b6db763986302cbad9ae02c61a0f1996d52c2d558cc5dbc989f3ef5ad53cfc2370df88e643b377b19ee",
31
- "sha256": "c5040a0bd6a33de8ffca965c4d5e5953897f6776a239283b146d677e2e7221ed",
32
- "sha1": "b229f74d58ec12ae4375dc666928d118938e19e4",
33
- "md5": "e06c3debed9c38c907f69263825babb0"
27
+ "name": "expo.modules.ui-56.0.20.aar",
28
+ "url": "expo.modules.ui-56.0.20.aar",
29
+ "size": 1941451,
30
+ "sha512": "33c0e88d0bb46e4e00f4916b859f78327081ff3995fb3340e132489c0898a61229aad5989455279a06d2a52a0e8be4945942602d3a231fc5d0cd930bb8b04a66",
31
+ "sha256": "11705a42f0bda49ba0f6ca5f38214e9e98afea5ae6fe34954e06076cd8daf7e8",
32
+ "sha1": "4d91a04542a27e40a7866b4e63f804293ff372b1",
33
+ "md5": "944517fc36046ca971cf969760574fad"
34
34
  }
35
35
  ]
36
36
  },
@@ -141,13 +141,13 @@
141
141
  ],
142
142
  "files": [
143
143
  {
144
- "name": "expo.modules.ui-56.0.18.aar",
145
- "url": "expo.modules.ui-56.0.18.aar",
146
- "size": 1944191,
147
- "sha512": "d10bffe2657a8f7e5e1886eec9a1404d7b6d5bcef4a50b6db763986302cbad9ae02c61a0f1996d52c2d558cc5dbc989f3ef5ad53cfc2370df88e643b377b19ee",
148
- "sha256": "c5040a0bd6a33de8ffca965c4d5e5953897f6776a239283b146d677e2e7221ed",
149
- "sha1": "b229f74d58ec12ae4375dc666928d118938e19e4",
150
- "md5": "e06c3debed9c38c907f69263825babb0"
144
+ "name": "expo.modules.ui-56.0.20.aar",
145
+ "url": "expo.modules.ui-56.0.20.aar",
146
+ "size": 1941451,
147
+ "sha512": "33c0e88d0bb46e4e00f4916b859f78327081ff3995fb3340e132489c0898a61229aad5989455279a06d2a52a0e8be4945942602d3a231fc5d0cd930bb8b04a66",
148
+ "sha256": "11705a42f0bda49ba0f6ca5f38214e9e98afea5ae6fe34954e06076cd8daf7e8",
149
+ "sha1": "4d91a04542a27e40a7866b4e63f804293ff372b1",
150
+ "md5": "944517fc36046ca971cf969760574fad"
151
151
  }
152
152
  ]
153
153
  },
@@ -161,13 +161,13 @@
161
161
  },
162
162
  "files": [
163
163
  {
164
- "name": "expo.modules.ui-56.0.18-sources.jar",
165
- "url": "expo.modules.ui-56.0.18-sources.jar",
166
- "size": 93876,
167
- "sha512": "a3762cf9549225df1a60ad90cdf83586c4bb6358cecaa627f78a299a8aa5bd23ebebc740d6c0cc7acbf75d134e3c45ca8059459c6fcbc796beeeb4cb5d9dbfb8",
168
- "sha256": "e456560887c0d9471dbddf4b7f5c232432a588ecb6b531120c9ce193f8d2f07d",
169
- "sha1": "071ba8aee8e6056c59d7f18aa247e536e110f493",
170
- "md5": "22f57bb7a0ea0016c8efa6cde687934b"
164
+ "name": "expo.modules.ui-56.0.20-sources.jar",
165
+ "url": "expo.modules.ui-56.0.20-sources.jar",
166
+ "size": 94265,
167
+ "sha512": "50b75ddd02eccceb55f0e7985344e58796d0636802fd81e940f357ed55f87bbf889edebad6dc727c1a677082928b67e6453595aaf809ada12871779e5e313978",
168
+ "sha256": "1b9fff22820c7fb50e59d2033ae3199e9fa2c5c853138629a6e2767f50f7ab2f",
169
+ "sha1": "6abfcbf907f83e8fe7443a2e783fd2537c3935b2",
170
+ "md5": "e50d71fc4e05c0d5255ddfd0e92ede94"
171
171
  }
172
172
  ]
173
173
  }
@@ -0,0 +1 @@
1
+ ee8c1079a5f05c3ae2ccb8277f6f7e546cc06d08
@@ -0,0 +1 @@
1
+ 12afde2f9133828ede93ba2a33c1b416185823799b57305a6e68f9b933b824fe
@@ -0,0 +1 @@
1
+ acc1dc7bd429770a57363b473ad48c41e68a66998970f5897990d2423202117ad081bba36612492f21b116d90717032564fd956f52609009137ec6516cbcf3c9
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>expo.modules.ui</groupId>
11
11
  <artifactId>expo.modules.ui</artifactId>
12
- <version>56.0.18</version>
12
+ <version>56.0.20</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.ui</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ e9a7acc373156ff43f3edbc53067244a7e19ea5d
@@ -0,0 +1 @@
1
+ 061b93e8346e7e159b65425cbe99e691440eab11bffc0ad4e1cc5e93df17c018
@@ -0,0 +1 @@
1
+ a5239bc32e138cdeaf2697962bd1c64bd73dacaf68cd5bee1334b7fa4360c926b7ed5302309772f2fc729705bbd5acb0fdcddaf92df202e7b1ebaa08f8faf4b9
@@ -3,11 +3,11 @@
3
3
  <groupId>expo.modules.ui</groupId>
4
4
  <artifactId>expo.modules.ui</artifactId>
5
5
  <versioning>
6
- <latest>56.0.18</latest>
7
- <release>56.0.18</release>
6
+ <latest>56.0.20</latest>
7
+ <release>56.0.20</release>
8
8
  <versions>
9
- <version>56.0.18</version>
9
+ <version>56.0.20</version>
10
10
  </versions>
11
- <lastUpdated>20260615113818</lastUpdated>
11
+ <lastUpdated>20260703084627</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- 80860432a0537ca5e443caadce02f0f9
1
+ d40a2dd006f2832a4973fb04fd7c56cf
@@ -1 +1 @@
1
- cd6722114453fb0a0a543e934c7f1615700af030
1
+ 9b30a3c3c561658ca61eb7407afb6090f0efe50e
@@ -1 +1 @@
1
- 7048be1f0ef2fb14d3a3f0a98259d7ec2c89ddd3e1fb6482a2207bfaf72a0cbe
1
+ bbc911556627e42b0533776eaeab975e59f80bb58162d3b1faf35008c9fa7e32
@@ -1 +1 @@
1
- 8675efe9cf7924c026f205535fcc7b1c85f0cb6634c3ed42f770e8101956ee33dbada364e1fd7499b2e34e06b369e3ad7377c872ce27509c7e84180124fe5ed9
1
+ 74d4e53a87fe6042a261f82c0de37c8d4922fa0812b4c58f48483e4fb871fbb77c5b126fcd6f6a21f9c18bc094e16d4b5576f241f29f279633e80e96e90d6012