@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
@@ -0,0 +1,245 @@
1
+ import type { ComponentProps, ElementType } from 'react';
2
+ import {
3
+ processColor,
4
+ unstable_createElement,
5
+ type ColorValue,
6
+ type ImageStyle,
7
+ type StyleProp,
8
+ type TextStyle,
9
+ type ViewStyle,
10
+ } from 'react-native';
11
+
12
+ type Simplify<T> = { [K in keyof T]: T[K] };
13
+ type Merge<A, B> = Simplify<Omit<A, keyof B> & B>;
14
+
15
+ type WebComponentProps<T extends ElementType> = Merge<
16
+ ComponentProps<T>,
17
+ {
18
+ dataSet?: Record<string, string | undefined>;
19
+ focusable?: boolean;
20
+ style?: StyleProp<ImageStyle | TextStyle | ViewStyle>;
21
+ testID?: string;
22
+ }
23
+ >;
24
+
25
+ export const createWebComponent =
26
+ <T extends ElementType>(type: T) =>
27
+ (props: WebComponentProps<T>) =>
28
+ unstable_createElement(type, props);
29
+
30
+ export const css = (strings: TemplateStringsArray, ...values: unknown[]): string =>
31
+ strings
32
+ .reduce((acc, s, i) => acc + s + (i < values.length ? String(values[i]) : ''), '')
33
+ .replace(/\s+/g, ' ')
34
+ .trim();
35
+
36
+ const lightVariables = css`
37
+ --expo-ui-background: #ffffff;
38
+ --expo-ui-foreground: #000000;
39
+
40
+ --expo-ui-gray-50: #f9fafb;
41
+ --expo-ui-gray-100: #f0f1f2;
42
+ --expo-ui-gray-150: #eaecf0;
43
+ --expo-ui-gray-200: #e1e4e8;
44
+ --expo-ui-gray-300: #d7dbdf;
45
+ --expo-ui-gray-400: #c9d1d9;
46
+ --expo-ui-gray-500: #687076;
47
+ --expo-ui-gray-600: #596068;
48
+ --expo-ui-gray-700: #37414a;
49
+ --expo-ui-gray-800: #25292e;
50
+ --expo-ui-gray-900: #11181c;
51
+
52
+ --expo-ui-shadow-button: 0 1px 2px 0 rgba(0, 0, 0, 0.08);
53
+ `;
54
+
55
+ const darkVariables = css`
56
+ --expo-ui-background: #0b0f14;
57
+ --expo-ui-foreground: #ffffff;
58
+
59
+ --expo-ui-gray-50: #111418;
60
+ --expo-ui-gray-100: #1d2128;
61
+ --expo-ui-gray-150: #252932;
62
+ --expo-ui-gray-200: #1f242c;
63
+ --expo-ui-gray-300: #30363d;
64
+ --expo-ui-gray-400: #484f58;
65
+ --expo-ui-gray-500: #6e7781;
66
+ --expo-ui-gray-600: #9aa4ae;
67
+ --expo-ui-gray-700: #4b5560;
68
+ --expo-ui-gray-800: #c0c8d0;
69
+ --expo-ui-gray-900: #e6edf3;
70
+
71
+ --expo-ui-shadow-button: 0 1px 2px 0 rgba(0, 0, 0, 0.5);
72
+ `;
73
+
74
+ export const colors = {
75
+ background: 'var(--expo-ui-background)',
76
+ foreground: 'var(--expo-ui-foreground)',
77
+
78
+ red: '#cf222e',
79
+
80
+ primary: {
81
+ foreground: 'var(--expo-ui-primary-foreground)',
82
+ 50: 'var(--expo-ui-primary-50)',
83
+ 100: 'var(--expo-ui-primary-100)',
84
+ 200: 'var(--expo-ui-primary-200)',
85
+ 300: 'var(--expo-ui-primary-300)',
86
+ 400: 'var(--expo-ui-primary-400)',
87
+ 500: 'var(--expo-ui-primary-500)',
88
+ 600: 'var(--expo-ui-primary-600)',
89
+ 700: 'var(--expo-ui-primary-700)',
90
+ 800: 'var(--expo-ui-primary-800)',
91
+ 900: 'var(--expo-ui-primary-900)',
92
+ },
93
+
94
+ gray: {
95
+ 50: 'var(--expo-ui-gray-50)',
96
+ 100: 'var(--expo-ui-gray-100)',
97
+ 200: 'var(--expo-ui-gray-200)',
98
+ 300: 'var(--expo-ui-gray-300)',
99
+ 400: 'var(--expo-ui-gray-400)',
100
+ 500: 'var(--expo-ui-gray-500)',
101
+ 600: 'var(--expo-ui-gray-600)',
102
+ 700: 'var(--expo-ui-gray-700)',
103
+ 800: 'var(--expo-ui-gray-800)',
104
+ 900: 'var(--expo-ui-gray-900)',
105
+ },
106
+ };
107
+
108
+ export const durations = {
109
+ fast: '120ms',
110
+ base: '120ms',
111
+ slow: '280ms',
112
+ };
113
+
114
+ export const easings = {
115
+ standard: 'cubic-bezier(0.4, 0, 0.2, 1)',
116
+ };
117
+
118
+ export const shadows = {
119
+ button: 'var(--expo-ui-shadow-button)',
120
+ focus: '0 0 0 3px color-mix(in oklab, var(--expo-ui-primary-500) 35%, transparent)',
121
+ input: '0 1px 0 rgba(0, 0, 0, 0.02)',
122
+ };
123
+
124
+ export const globalCss = css`
125
+ :root {
126
+ ${lightVariables}
127
+ }
128
+
129
+ @media (prefers-color-scheme: dark) {
130
+ :root:not([data-theme]) {
131
+ ${darkVariables}
132
+ }
133
+ }
134
+
135
+ [data-theme='dark'] {
136
+ ${darkVariables}
137
+ }
138
+ `;
139
+
140
+ // Color utils
141
+
142
+ const DEFAULT_PRIMARY_COLOR = '#007aff';
143
+
144
+ type Lch = [number, number, number];
145
+
146
+ const srgbToLinear = (c: number): number =>
147
+ c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
148
+
149
+ const linearToSrgb = (c: number): number =>
150
+ c <= 0.0031308 ? 12.92 * c : 1.055 * Math.pow(c, 1 / 2.4) - 0.055;
151
+
152
+ const hexToLch = (hex: string): Lch => {
153
+ const raw = hex.replace('#', '');
154
+ const body = raw.length === 3 ? Array.from(raw, (c) => c + c).join('') : raw;
155
+
156
+ const r = srgbToLinear(Number.parseInt(body.slice(0, 2), 16) / 255);
157
+ const g = srgbToLinear(Number.parseInt(body.slice(2, 4), 16) / 255);
158
+ const b = srgbToLinear(Number.parseInt(body.slice(4, 6), 16) / 255);
159
+
160
+ const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);
161
+ const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);
162
+ const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);
163
+
164
+ const L = 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s;
165
+ const labA = 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s;
166
+ const labB = 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s;
167
+
168
+ return [L, Math.sqrt(labA * labA + labB * labB), Math.atan2(labB, labA)];
169
+ };
170
+
171
+ const lchToHex = ([L, chroma, hue]: Lch): string => {
172
+ const a = chroma * Math.cos(hue);
173
+ const b = chroma * Math.sin(hue);
174
+
175
+ const l_ = L + 0.3963377774 * a + 0.2158037573 * b;
176
+ const m_ = L - 0.1055613458 * a - 0.0638541728 * b;
177
+ const s_ = L - 0.0894841775 * a - 1.291485548 * b;
178
+
179
+ const l = l_ * l_ * l_;
180
+ const m = m_ * m_ * m_;
181
+ const s = s_ * s_ * s_;
182
+
183
+ const r = +4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;
184
+ const g = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;
185
+ const bl = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s;
186
+
187
+ const cl = (c: number): number => Math.max(0, Math.min(255, Math.round(linearToSrgb(c) * 255)));
188
+ return '#' + [cl(r), cl(g), cl(bl)].map((x) => x.toString(16).padStart(2, '0')).join('');
189
+ };
190
+
191
+ // Steps tuned for sensible UI scale. Lightness targets are perceptual (OKLCH).
192
+ // Chroma multiplier softens lightest and darkest stops so they don't read neon.
193
+ const PRIMARY_STOPS = [
194
+ { step: 50, L: 0.975, cMul: 0.08 },
195
+ { step: 100, L: 0.945, cMul: 0.2 },
196
+ { step: 200, L: 0.89, cMul: 0.45 },
197
+ { step: 300, L: 0.81, cMul: 0.7 },
198
+ { step: 400, L: 0.7, cMul: 0.9 },
199
+ { step: 500, L: null, cMul: 1.0 }, // anchor at user input
200
+ { step: 600, L: 0.5, cMul: 1.0 },
201
+ { step: 700, L: 0.42, cMul: 0.95 },
202
+ { step: 800, L: 0.34, cMul: 0.85 },
203
+ { step: 900, L: 0.25, cMul: 0.7 },
204
+ ] as const;
205
+
206
+ type PrimaryColorScale = Record<
207
+ `--expo-ui-primary-${'foreground' | (typeof PRIMARY_STOPS)[number]['step']}`,
208
+ string
209
+ >;
210
+
211
+ // Normalize any `ColorValue` (named color, `rgb()` / `rgba()`, hex string, or
212
+ // processed number) to a `#RRGGBB` string. `processColor` returns an
213
+ // `0xAARRGGBB` integer (or `null`/`undefined` for invalid input); alpha is
214
+ // dropped since the scale only needs the base hue.
215
+ const colorValueToHex = (color: ColorValue): string | null => {
216
+ const argb = processColor(color);
217
+
218
+ if (typeof argb !== 'number') {
219
+ return null;
220
+ }
221
+
222
+ const r = (argb >> 16) & 0xff;
223
+ const g = (argb >> 8) & 0xff;
224
+ const b = argb & 0xff;
225
+ return '#' + [r, g, b].map((c) => c.toString(16).padStart(2, '0')).join('');
226
+ };
227
+
228
+ export const generatePrimaryColorScale = (
229
+ color: ColorValue | undefined = DEFAULT_PRIMARY_COLOR
230
+ ): Record<string, string> => {
231
+ const [L, C, H] = hexToLch(colorValueToHex(color) ?? DEFAULT_PRIMARY_COLOR);
232
+
233
+ const scale = {
234
+ // Contrast for filled buttons: pick white or a hue-tinted near-black based on L of 500
235
+ '--expo-ui-primary-foreground': L < 0.74 ? '#ffffff' : lchToHex([0.18, C * 0.1, H]),
236
+ } as PrimaryColorScale;
237
+
238
+ for (const { step, L: tgtL, cMul } of PRIMARY_STOPS) {
239
+ const newL = tgtL == null ? L : tgtL;
240
+ const newC = C * cMul;
241
+ scale[`--expo-ui-primary-${step}`] = lchToHex([newL, newC, H]);
242
+ }
243
+
244
+ return scale;
245
+ };
package/CLAUDE.md DELETED
@@ -1,54 +0,0 @@
1
- # expo-ui component guidelines
2
-
3
- expo-ui is a library of native UI components for React Native, bridging SwiftUI views on iOS and Jetpack Compose components on Android. Each platform has its own set of components exported from `@expo/ui/swift-ui` and `@expo/ui/jetpack-compose` respectively.
4
-
5
- ## Core principle
6
-
7
- Bridge native components to JavaScript with as little abstraction as possible. Native views should be thin wrappers — no added logic, state management, or behavior beyond what the platform component provides. Everything that can be set or controlled from JavaScript should be controlled from JavaScript.
8
-
9
- Mirror the native API shape. If the underlying SwiftUI / Compose component exposes imperative methods (e.g. SwiftUI's `ScrollViewProxy.scrollTo`, Compose's `PagerState.animateScrollToPage`), expose them as imperative methods in JS — don't paper them over with a controlled prop + sync layer just for the sake of a "React-y" API.
10
-
11
- ## Naming
12
-
13
- - The JavaScript API must mirror the native APIs closely.
14
- - Exported components must have the same name as the underlying native component (e.g. SwiftUI `TabView` -> export `TabView`, Jetpack Compose `HorizontalPager` -> export `HorizontalPager`).
15
- - Don't turn native-layer modifiers into props in the JS layer — modifiers stay as modifiers.
16
- - Use `export function ComponentName` (the dominant pattern in this codebase). Use `export const` only for non-component values like modifiers or constants. Avoid the `export { LocalName as ExportName }` rename pattern unless the local name must differ.
17
- - Props, constants, and enum values must use the same names as the native API. If SwiftUI calls it `scrollEnabled`, the JS prop is `scrollEnabled`. If Compose calls it `userScrollEnabled`, the JS prop is `userScrollEnabled`.
18
- - Ensure components have the correct display name in React DevTools. Either name the function directly (e.g. `function TabView`) or set `.displayName`.
19
-
20
- ## Props and events
21
-
22
- - Include JSDoc for every supported prop.
23
- - Events follow the expo-ui `ViewEvent` pattern: the public JS callback receives unwrapped values (e.g. `onPageSelected?: (position: number) => void`), and the component internally adapts to/from the native event shape.
24
-
25
- ## Native code
26
-
27
- - Expose all configurable properties of the underlying native component as props. Don't hardcode values that the user might want to change.
28
- - Use `@Field` (iOS) and data class fields (Android) for props, `EventDispatcher` for events, and `AsyncFunction` for imperative methods when unavoidable.
29
-
30
- ## File structure
31
-
32
- - iOS (SwiftUI): `packages/expo-ui/ios/<ComponentName>/<ComponentName>View.swift` (or `ios/<ComponentName>View.swift` for simple components)
33
- - Android (Compose): `packages/expo-ui/android/src/main/java/expo/modules/ui/<ComponentName>View.kt`
34
- - TypeScript (SwiftUI): `packages/expo-ui/src/swift-ui/<ComponentName>/index.tsx`
35
- - TypeScript (Compose): `packages/expo-ui/src/jetpack-compose/<ComponentName>/index.tsx`
36
- - Register views in `ios/ExpoUIModule.swift` and `android/.../ExpoUIModule.kt`
37
- - Export from `src/swift-ui/index.tsx` and `src/jetpack-compose/index.ts`
38
-
39
- ## Example screens
40
-
41
- For every component added, create example screens in NCL (native-component-list):
42
-
43
- - `apps/native-component-list/src/screens/UI/<ComponentName>Screen.ios.tsx` — imports from `@expo/ui/swift-ui`
44
- - `apps/native-component-list/src/screens/UI/<ComponentName>Screen.android.tsx` — imports from `@expo/ui/jetpack-compose`
45
- - Register in both `UIScreen.ios.tsx` and `UIScreen.android.tsx`
46
- - Keep the minimum set of examples needed to cover available features.
47
-
48
- ## Before committing
49
-
50
- 1. Run `pnpm build` in the package directory — the `build/` output must be committed alongside source changes. CI will fail otherwise.
51
- 2. Run `pnpm lint --max-warnings 0`.
52
- 3. Add a changelog entry to `CHANGELOG.md` under the "Unpublished" section.
53
- 4. When adding a new component, add documentation for it. When adding a new feature to an existing component, update its documentation accordingly. Docs are MDX files in `docs/pages/versions/unversioned/sdk/ui/swift-ui/` and `docs/pages/versions/unversioned/sdk/ui/jetpack-compose/`.
54
- 5. Regenerate API docs data by running `et gdad -p @expo/ui`. If the change is to be cherry-picked to an already-released SDK version, also run `et gdad -p @expo/ui -s <version>` (e.g. `et gdad -p @expo/ui -s 55` for SDK 55). Changes are very likely to be picked to the latest stable of expo-ui (`npm view @expo/ui version`).
package/CONTRIBUTING.md DELETED
@@ -1,30 +0,0 @@
1
- # Contributing to `@expo/ui`
2
-
3
- `@expo/ui` maps native UI frameworks (SwiftUI on iOS, Jetpack Compose on Android) to React Native.
4
-
5
- ## Before opening a PR
6
-
7
- - [ ] Rebuilt JS output: `yarn build` (from `packages/expo-ui/`) and committed the `build/` output.
8
-
9
- ### When adding or updating a component
10
-
11
- - [ ] Added an example to the relevant screen in `apps/native-component-list/src/screens/UI/`
12
- - [ ] Regenerated docs (from repo root): `et gdad -p "expo-ui/swift-ui/<component>"` and/or `et gdad -p "expo-ui/jetpack-compose/<component>"`
13
- - [ ] Added an example in the relevant docs page
14
-
15
- ### When adding or updating a modifier
16
-
17
- - [ ] Added an example to the relevant screen in `apps/native-component-list/src/screens/UI/`
18
- - [ ] Regenerated docs (from repo root): `et gdad -p "expo-ui/swift-ui/modifiers"` and/or `et gdad -p "expo-ui/jetpack-compose/modifiers"`
19
-
20
- ## Project structure
21
-
22
- - `packages/expo-ui/ios/` - Swift/SwiftUI source files
23
- - `packages/expo-ui/android/` - Kotlin/Jetpack Compose source files
24
- - `packages/expo-ui/src/swift-ui/` - TypeScript components and types for the SwiftUI side
25
- - `packages/expo-ui/src/jetpack-compose/` - TypeScript components and types for the Compose side
26
-
27
- ## General guidelines
28
-
29
- - **Match the native APIs** — prop names, types, and behavior should mirror their SwiftUI / Jetpack Compose counterparts as closely as possible.
30
- - **Reuse existing types** — before creating a new Record or TypeScript type, check if one already exists.
@@ -1 +0,0 @@
1
- 071ba8aee8e6056c59d7f18aa247e536e110f493
@@ -1 +0,0 @@
1
- e456560887c0d9471dbddf4b7f5c232432a588ecb6b531120c9ce193f8d2f07d
@@ -1 +0,0 @@
1
- a3762cf9549225df1a60ad90cdf83586c4bb6358cecaa627f78a299a8aa5bd23ebebc740d6c0cc7acbf75d134e3c45ca8059459c6fcbc796beeeb4cb5d9dbfb8
@@ -1 +0,0 @@
1
- b229f74d58ec12ae4375dc666928d118938e19e4
@@ -1 +0,0 @@
1
- c5040a0bd6a33de8ffca965c4d5e5953897f6776a239283b146d677e2e7221ed
@@ -1 +0,0 @@
1
- d10bffe2657a8f7e5e1886eec9a1404d7b6d5bcef4a50b6db763986302cbad9ae02c61a0f1996d52c2d558cc5dbc989f3ef5ad53cfc2370df88e643b377b19ee
@@ -1 +0,0 @@
1
- 0988151e459560e5e43657673bd44622ec339e10
@@ -1 +0,0 @@
1
- daa61c8a7fb9d0f2e326c3018e5a459a828cde6430210274c43903bc38717d61
@@ -1 +0,0 @@
1
- ab8cb4cd46417dda5090e5be5e92283e74982782289b297bb067b957bea5cfc8e2ee968da086be2a599dee0f85580dbc4686e06e15150b629c6e3e670eb44483
@@ -1 +0,0 @@
1
- 8ebee813de77620f097bd91d83faf80624ff860d
@@ -1 +0,0 @@
1
- 4d652208d530e23197763eb2f3b32fd084e6065ca63b29da0c3b454a07d586be
@@ -1 +0,0 @@
1
- 8c2c74ce7cfe2b19bb8bf9999c7e9ab968616a25b6419741f99e93e8d15adde4d8e6fb59bd6eeb58b0b6293b21a17d6449438f960524ff163065d28b475b3140