@expo/ui 55.0.0 → 55.0.2

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 (168) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/CONTRIBUTING.md +30 -0
  3. package/android/build.gradle +2 -2
  4. package/android/src/main/java/expo/modules/ui/DatePickerView.kt +90 -7
  5. package/android/src/main/java/expo/modules/ui/HorizontalFloatingToolbarView.kt +21 -8
  6. package/android/src/main/java/expo/modules/ui/ModifierRegistry.kt +105 -39
  7. package/android/src/main/java/expo/modules/ui/RNHostView.kt +204 -50
  8. package/android/src/main/java/expo/modules/ui/SwitchView.kt +70 -4
  9. package/android/src/main/java/expo/modules/ui/button/IconButton.kt +7 -1
  10. package/android/src/main/java/expo/modules/ui/convertibles/AnimatableFloat.kt +26 -0
  11. package/android/src/main/java/expo/modules/ui/convertibles/AnimationSpecParams.kt +93 -0
  12. package/android/src/main/java/expo/modules/ui/convertibles/GraphicsLayerParams.kt +24 -0
  13. package/build/jetpack-compose/Box/index.d.ts +14 -0
  14. package/build/jetpack-compose/Box/index.d.ts.map +1 -0
  15. package/build/jetpack-compose/Column/index.d.ts +22 -0
  16. package/build/jetpack-compose/Column/index.d.ts.map +1 -0
  17. package/build/jetpack-compose/DatePicker/index.d.ts +99 -0
  18. package/build/jetpack-compose/DatePicker/index.d.ts.map +1 -1
  19. package/build/jetpack-compose/FlowRow/index.d.ts +14 -0
  20. package/build/jetpack-compose/FlowRow/index.d.ts.map +1 -0
  21. package/build/jetpack-compose/LazyColumn/index.d.ts +0 -3
  22. package/build/jetpack-compose/LazyColumn/index.d.ts.map +1 -1
  23. package/build/jetpack-compose/Row/index.d.ts +22 -0
  24. package/build/jetpack-compose/Row/index.d.ts.map +1 -0
  25. package/build/jetpack-compose/Spacer/index.d.ts +2 -2
  26. package/build/jetpack-compose/Switch/index.d.ts +18 -0
  27. package/build/jetpack-compose/Switch/index.d.ts.map +1 -1
  28. package/build/jetpack-compose/index.d.ts +4 -1
  29. package/build/jetpack-compose/index.d.ts.map +1 -1
  30. package/build/jetpack-compose/layout-types.d.ts +26 -0
  31. package/build/jetpack-compose/layout-types.d.ts.map +1 -0
  32. package/build/jetpack-compose/layout.d.ts +5 -36
  33. package/build/jetpack-compose/layout.d.ts.map +1 -1
  34. package/build/jetpack-compose/modifiers/animation.d.ts +44 -0
  35. package/build/jetpack-compose/modifiers/animation.d.ts.map +1 -0
  36. package/build/jetpack-compose/modifiers/index.d.ts +50 -3
  37. package/build/jetpack-compose/modifiers/index.d.ts.map +1 -1
  38. package/build/swift-ui/AccessoryWidgetBackground/index.d.ts +4 -0
  39. package/build/swift-ui/AccessoryWidgetBackground/index.d.ts.map +1 -0
  40. package/build/swift-ui/ConfirmationDialog/index.d.ts.map +1 -1
  41. package/build/swift-ui/ContextMenu/index.d.ts.map +1 -1
  42. package/build/swift-ui/ControlGroup/index.d.ts +29 -0
  43. package/build/swift-ui/ControlGroup/index.d.ts.map +1 -0
  44. package/build/swift-ui/Gauge/index.d.ts.map +1 -1
  45. package/build/swift-ui/Image/index.d.ts +7 -1
  46. package/build/swift-ui/Image/index.d.ts.map +1 -1
  47. package/build/swift-ui/Label/index.d.ts.map +1 -1
  48. package/build/swift-ui/LabeledContent/index.d.ts.map +1 -1
  49. package/build/swift-ui/Menu/index.d.ts.map +1 -1
  50. package/build/swift-ui/Picker/index.d.ts.map +1 -1
  51. package/build/swift-ui/Popover/index.d.ts.map +1 -1
  52. package/build/swift-ui/Section/index.d.ts.map +1 -1
  53. package/build/swift-ui/Slider/index.d.ts.map +1 -1
  54. package/build/swift-ui/SlotView.d.ts +5 -0
  55. package/build/swift-ui/SlotView.d.ts.map +1 -0
  56. package/build/swift-ui/index.d.ts +2 -0
  57. package/build/swift-ui/index.d.ts.map +1 -1
  58. package/build/swift-ui/modifiers/index.d.ts +38 -1
  59. package/build/swift-ui/modifiers/index.d.ts.map +1 -1
  60. package/expo-module.config.json +1 -1
  61. package/ios/AccessoryWidgetBackgroundView.swift +27 -0
  62. package/ios/ConfirmationDialog/ConfirmationDialog.swift +3 -9
  63. package/ios/ConfirmationDialog/ConfirmationDialogProps.swift +0 -5
  64. package/ios/ContextMenu/ContextMenu.swift +27 -22
  65. package/ios/ContextMenu/ContextMenuRecords.swift +0 -6
  66. package/ios/ControlGroupView.swift +33 -0
  67. package/ios/ExpoUIModule.swift +10 -32
  68. package/ios/GaugeView.swift +4 -26
  69. package/ios/HostView.swift +1 -2
  70. package/ios/ImageView.swift +22 -11
  71. package/ios/Label.swift +2 -17
  72. package/ios/LabeledContentView.swift +3 -27
  73. package/ios/Menu/MenuRecords.swift +0 -2
  74. package/ios/Menu/MenuView.swift +2 -5
  75. package/ios/Modifiers/ResizableModifier.swift +24 -0
  76. package/ios/Modifiers/Rotation3DEffectModifier.swift +20 -0
  77. package/ios/Modifiers/View+ModifierArray.swift +29 -0
  78. package/ios/Modifiers/ViewModifierRegistry.swift +39 -3
  79. package/ios/Modifiers/WidgetModifiers.swift +46 -0
  80. package/ios/Picker/PickerView.swift +2 -6
  81. package/ios/Popover/PopoverProps.swift +0 -4
  82. package/ios/Popover/PopoverView.swift +2 -6
  83. package/ios/RNHostView.swift +91 -10
  84. package/ios/SectionView.swift +6 -12
  85. package/ios/SecureFieldView.swift +0 -1
  86. package/ios/ShareLink/ShareLinkView.swift +1 -1
  87. package/ios/SliderView.swift +10 -27
  88. package/ios/SlotView.swift +38 -0
  89. package/ios/TextFieldView.swift +0 -1
  90. package/ios/UIBaseView.swift +34 -3
  91. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{55.0.0/expo.modules.ui-55.0.0-sources.jar → 55.0.2/expo.modules.ui-55.0.2-sources.jar} +0 -0
  92. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.md5 +1 -0
  93. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.sha1 +1 -0
  94. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.sha256 +1 -0
  95. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2-sources.jar.sha512 +1 -0
  96. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar +0 -0
  97. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.md5 +1 -0
  98. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.sha1 +1 -0
  99. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.sha256 +1 -0
  100. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.aar.sha512 +1 -0
  101. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{55.0.0/expo.modules.ui-55.0.0.module → 55.0.2/expo.modules.ui-55.0.2.module} +22 -22
  102. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.md5 +1 -0
  103. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.sha1 +1 -0
  104. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.sha256 +1 -0
  105. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.module.sha512 +1 -0
  106. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{55.0.0/expo.modules.ui-55.0.0.pom → 55.0.2/expo.modules.ui-55.0.2.pom} +1 -1
  107. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.md5 +1 -0
  108. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.sha1 +1 -0
  109. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.sha256 +1 -0
  110. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.2/expo.modules.ui-55.0.2.pom.sha512 +1 -0
  111. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
  112. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
  113. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
  114. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
  115. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
  116. package/package.json +2 -2
  117. package/src/jetpack-compose/Box/index.tsx +26 -0
  118. package/src/jetpack-compose/Column/index.tsx +39 -0
  119. package/src/jetpack-compose/DatePicker/index.tsx +106 -2
  120. package/src/jetpack-compose/FlowRow/index.tsx +29 -0
  121. package/src/jetpack-compose/LazyColumn/index.tsx +0 -3
  122. package/src/jetpack-compose/Row/index.tsx +36 -0
  123. package/src/jetpack-compose/Spacer/index.tsx +2 -2
  124. package/src/jetpack-compose/Switch/index.tsx +18 -0
  125. package/src/jetpack-compose/index.ts +4 -1
  126. package/src/jetpack-compose/layout-types.ts +48 -0
  127. package/src/jetpack-compose/layout.tsx +5 -106
  128. package/src/jetpack-compose/modifiers/animation.ts +37 -0
  129. package/src/jetpack-compose/modifiers/index.ts +60 -4
  130. package/src/swift-ui/AccessoryWidgetBackground/index.tsx +12 -0
  131. package/src/swift-ui/ConfirmationDialog/index.tsx +4 -12
  132. package/src/swift-ui/ContextMenu/index.tsx +6 -20
  133. package/src/swift-ui/ControlGroup/index.tsx +59 -0
  134. package/src/swift-ui/Gauge/index.tsx +5 -20
  135. package/src/swift-ui/Image/index.tsx +7 -1
  136. package/src/swift-ui/Label/index.tsx +2 -5
  137. package/src/swift-ui/LabeledContent/index.tsx +3 -12
  138. package/src/swift-ui/Menu/index.tsx +2 -6
  139. package/src/swift-ui/Picker/index.tsx +4 -11
  140. package/src/swift-ui/Popover/index.tsx +3 -12
  141. package/src/swift-ui/Section/index.tsx +4 -9
  142. package/src/swift-ui/Slider/index.tsx +4 -12
  143. package/src/swift-ui/SlotView.tsx +8 -0
  144. package/src/swift-ui/index.tsx +2 -0
  145. package/src/swift-ui/modifiers/index.ts +54 -1
  146. package/ios/ConfirmationDialog/ConfirmationDialogComponents.swift +0 -26
  147. package/ios/ContextMenu/ContextMenuComponents.swift +0 -37
  148. package/ios/Menu/MenuComponents.swift +0 -12
  149. package/ios/Picker/PickerComponents.swift +0 -24
  150. package/ios/Popover/PopoverComponents.swift +0 -18
  151. package/ios/SectionComponents.swift +0 -34
  152. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0-sources.jar.md5 +0 -1
  153. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0-sources.jar.sha1 +0 -1
  154. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0-sources.jar.sha256 +0 -1
  155. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0-sources.jar.sha512 +0 -1
  156. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.aar +0 -0
  157. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.aar.md5 +0 -1
  158. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.aar.sha1 +0 -1
  159. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.aar.sha256 +0 -1
  160. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.aar.sha512 +0 -1
  161. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.module.md5 +0 -1
  162. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.module.sha1 +0 -1
  163. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.module.sha256 +0 -1
  164. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.module.sha512 +0 -1
  165. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.pom.md5 +0 -1
  166. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.pom.sha1 +0 -1
  167. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.pom.sha256 +0 -1
  168. package/local-maven-repo/expo/modules/ui/expo.modules.ui/55.0.0/expo.modules.ui-55.0.0.pom.sha512 +0 -1
@@ -8,22 +8,24 @@ import SwiftUI
8
8
  */
9
9
  public struct UIBaseView<Props: UIBaseViewProps, Content: ExpoSwiftUI.View<Props>>: ExpoSwiftUI.View {
10
10
  @ObservedObject public var props: Props
11
+ let innerView: Content
11
12
 
12
13
  public init(props: Props) {
13
14
  self.props = props
15
+ self.innerView = Content(props: props)
14
16
  }
15
17
 
16
18
  public var body: some View {
17
- Content(props: props)
19
+ innerView
18
20
  .applyAccessibilityIdentifier(props.testID)
19
21
  .applyModifiers(props.modifiers, appContext: props.appContext, globalEventDispatcher: props.globalEventDispatcher)
20
22
  }
21
23
  }
22
24
 
23
25
  /**
24
- Base view modifier in expo-ui
25
- This is useful for View with AsyncFunctions that cannot use the `ExpoUIView` builder.
26
+ Deprecated. Use `applyModifiers` method directly instead.
26
27
  */
28
+ @available(*, deprecated, message: "Use applyModifiers method directly on the content view instead.")
27
29
  public struct UIBaseViewModifier<Props: UIBaseViewProps>: ViewModifier {
28
30
  @ObservedObject var props: Props
29
31
  var defaultFrameAlignment = Alignment.center
@@ -35,6 +37,21 @@ public struct UIBaseViewModifier<Props: UIBaseViewProps>: ViewModifier {
35
37
  }
36
38
  }
37
39
 
40
+ // MARK: - ViewWrapper
41
+
42
+ extension UIBaseView: ExpoSwiftUI.ViewWrapper {
43
+ public func getWrappedView() -> Any {
44
+ return innerView
45
+ }
46
+ }
47
+
48
+ // MARK: - FocusableView forwarding
49
+ extension UIBaseView: ExpoSwiftUI.FocusableView where Content: ExpoSwiftUI.FocusableView {
50
+ public func forceResignFirstResponder() {
51
+ innerView.forceResignFirstResponder()
52
+ }
53
+ }
54
+
38
55
  /**
39
56
  Common UI Builder in expo-ui.
40
57
  This is similar to expo-modules-core's View builder but further supports common base view props and modifiers
@@ -49,3 +66,17 @@ public func ExpoUIView<Content: ExpoSwiftUI.View>(
49
66
  ViewName(contentName)
50
67
  }
51
68
  }
69
+
70
+ /**
71
+ ExpoUIView overload that accepts a `@ViewDefinitionBuilder` closure for registering
72
+ AsyncFunctions and other view definition elements.
73
+ */
74
+ public func ExpoUIView<Content: ExpoSwiftUI.View>(
75
+ _ contentType: Content.Type,
76
+ @ExpoSwiftUI.ViewDefinitionBuilder<Content> _ elements: @escaping () -> [AnyViewDefinitionElement]
77
+ ) -> ExpoSwiftUI.ViewDefinition<Content.Props, UIBaseView<Content.Props, Content>> where Content.Props: UIBaseViewProps {
78
+ let wrappedType = UIBaseView<Content.Props, Content>.self
79
+ let contentName = String(describing: contentType)
80
+
81
+ return ExpoSwiftUI.ViewDefinition(wrappedType, name: contentName, elements: elements())
82
+ }
@@ -0,0 +1 @@
1
+ a34da0ffd5b373d346c39f45a5a61ec09f5c1b7b
@@ -0,0 +1 @@
1
+ 2b50088dab0279da8a113fe0396237a4525f8a9fb130d4b1cd15b5072f866a53
@@ -0,0 +1 @@
1
+ 588744d4be57b3e7ed22bcccd40222dcb365367cd3bb72fd0aeb4c0f1925229f986b58712f477a0eebdeb0e8d887b09e0aab21764dc372a5755e622118d88d7b
@@ -0,0 +1 @@
1
+ d9837c255bb0284a69d6b234195055a11d9bd98f
@@ -0,0 +1 @@
1
+ 9a82f1f77a7ee3f302982361eb41e2bb8b86cbd430061a07cce8c4511b40cbf4
@@ -0,0 +1 @@
1
+ 8a56aa5f1a198809e7bd3601605ec9e5ae7414b7834d6d6a44c024991f27de1cd744ed4b575b23b6b537e3e759c39309b220ca9fe57ec76c42b4130326c331fb
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.ui",
5
5
  "module": "expo.modules.ui",
6
- "version": "55.0.0",
6
+ "version": "55.0.2",
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-55.0.0.aar",
28
- "url": "expo.modules.ui-55.0.0.aar",
29
- "size": 732681,
30
- "sha512": "35a4fa077be99bf9bebfd55d3398894d0150be4a5a60503d407a6a487290f5b2fdd0b0624986ef2781097d50a3c1fe973786fd79a738e94d1de0228b04ab3e01",
31
- "sha256": "981050003cd4b3d57f26a29a9e0466bdbdae41cc8df253b571858ba1e46a6ab9",
32
- "sha1": "6c884449165b70583d08844b02f31ab547df4438",
33
- "md5": "28406ef3849bb822054f845e1e731d11"
27
+ "name": "expo.modules.ui-55.0.2.aar",
28
+ "url": "expo.modules.ui-55.0.2.aar",
29
+ "size": 776412,
30
+ "sha512": "8a56aa5f1a198809e7bd3601605ec9e5ae7414b7834d6d6a44c024991f27de1cd744ed4b575b23b6b537e3e759c39309b220ca9fe57ec76c42b4130326c331fb",
31
+ "sha256": "9a82f1f77a7ee3f302982361eb41e2bb8b86cbd430061a07cce8c4511b40cbf4",
32
+ "sha1": "d9837c255bb0284a69d6b234195055a11d9bd98f",
33
+ "md5": "c2ddc40af222d8ef304b15d13a112399"
34
34
  }
35
35
  ]
36
36
  },
@@ -120,13 +120,13 @@
120
120
  ],
121
121
  "files": [
122
122
  {
123
- "name": "expo.modules.ui-55.0.0.aar",
124
- "url": "expo.modules.ui-55.0.0.aar",
125
- "size": 732681,
126
- "sha512": "35a4fa077be99bf9bebfd55d3398894d0150be4a5a60503d407a6a487290f5b2fdd0b0624986ef2781097d50a3c1fe973786fd79a738e94d1de0228b04ab3e01",
127
- "sha256": "981050003cd4b3d57f26a29a9e0466bdbdae41cc8df253b571858ba1e46a6ab9",
128
- "sha1": "6c884449165b70583d08844b02f31ab547df4438",
129
- "md5": "28406ef3849bb822054f845e1e731d11"
123
+ "name": "expo.modules.ui-55.0.2.aar",
124
+ "url": "expo.modules.ui-55.0.2.aar",
125
+ "size": 776412,
126
+ "sha512": "8a56aa5f1a198809e7bd3601605ec9e5ae7414b7834d6d6a44c024991f27de1cd744ed4b575b23b6b537e3e759c39309b220ca9fe57ec76c42b4130326c331fb",
127
+ "sha256": "9a82f1f77a7ee3f302982361eb41e2bb8b86cbd430061a07cce8c4511b40cbf4",
128
+ "sha1": "d9837c255bb0284a69d6b234195055a11d9bd98f",
129
+ "md5": "c2ddc40af222d8ef304b15d13a112399"
130
130
  }
131
131
  ]
132
132
  },
@@ -140,13 +140,13 @@
140
140
  },
141
141
  "files": [
142
142
  {
143
- "name": "expo.modules.ui-55.0.0-sources.jar",
144
- "url": "expo.modules.ui-55.0.0-sources.jar",
145
- "size": 51394,
146
- "sha512": "fe721d26e09241994a20838afa7aecfcd15a3c74bb104a3b42753cb73608ad6784f0d820db4b654b6fd65df1165574b8353040f8d0a2161c2e3413e18c2b9b79",
147
- "sha256": "addee5fe747747c7459fb227f67189cd0c0a064fe2a037ed67057c560e7fb335",
148
- "sha1": "6e19bff717c5770bfbfab0f7b94f6e98217dc504",
149
- "md5": "d9047cbc88b3f7cbf9728460e27dd43d"
143
+ "name": "expo.modules.ui-55.0.2-sources.jar",
144
+ "url": "expo.modules.ui-55.0.2-sources.jar",
145
+ "size": 56358,
146
+ "sha512": "588744d4be57b3e7ed22bcccd40222dcb365367cd3bb72fd0aeb4c0f1925229f986b58712f477a0eebdeb0e8d887b09e0aab21764dc372a5755e622118d88d7b",
147
+ "sha256": "2b50088dab0279da8a113fe0396237a4525f8a9fb130d4b1cd15b5072f866a53",
148
+ "sha1": "a34da0ffd5b373d346c39f45a5a61ec09f5c1b7b",
149
+ "md5": "88aeb5d46abccb005a1f657379a191dd"
150
150
  }
151
151
  ]
152
152
  }
@@ -0,0 +1 @@
1
+ 30dbf6a3d9ec32bd3d35dcaa054f871c6aef4572
@@ -0,0 +1 @@
1
+ 776b37606fc84b29d80f4fad1667670284ba5424ef5463d07ddf9349a91092aa
@@ -0,0 +1 @@
1
+ 4ea7791e17643fc75674cebb245364eb7da0375f5f07bcba12d71021fbd53524280e0e41ab6aada44304126083e1ae4bdb554b0b5cbc81f8141e32200f8aea51
@@ -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>55.0.0</version>
12
+ <version>55.0.2</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
+ 785a21c06743ebd45e830929302eacfed1a02577
@@ -0,0 +1 @@
1
+ eb010d0e31664cc2341979943ef6419479f3fa3a34db9596c4662860ad70ba79
@@ -0,0 +1 @@
1
+ af7c2dbb1d6562a281f052003f7040abe11d3675d03857f5c7d3519b28a1a8be54a73ccc7f2fab909b7edbfd864d888936d71a737737fac71ff13783d969229d
@@ -3,11 +3,11 @@
3
3
  <groupId>expo.modules.ui</groupId>
4
4
  <artifactId>expo.modules.ui</artifactId>
5
5
  <versioning>
6
- <latest>55.0.0</latest>
7
- <release>55.0.0</release>
6
+ <latest>55.0.2</latest>
7
+ <release>55.0.2</release>
8
8
  <versions>
9
- <version>55.0.0</version>
9
+ <version>55.0.2</version>
10
10
  </versions>
11
- <lastUpdated>20260225012649</lastUpdated>
11
+ <lastUpdated>20260311141702</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- be097b1ca9d6557ce603d9fa8337d298
1
+ 3297c0326287d50f819c398744e70f0b
@@ -1 +1 @@
1
- ffb870c3e214c6335eda475340ecf91bb97a95e1
1
+ 52a054a9646396b7224594f0d12720d91de3d216
@@ -1 +1 @@
1
- 9fbe3d7daf56d306b01466ba459a1ca9a073df5d11712ba9746a45f54383c32f
1
+ 0ae7bf34378bccc60cb770b147533c2b4f1d10ede0a368c6ce75ab9763c6f66e
@@ -1 +1 @@
1
- fbfe14ec891c0a4f30a9da397ed8fad0422f6e68ab4d93830c4340800bad782a8fdfc84a5c1fb989966f1a38bcca1136353d0bfae3d9029885f57d663ec0af4a
1
+ b3f9f47205d7673ff988ddfc4632e556083ab8f5452376963677b9cc91314ff7363f811f1dfa575e8ead3c870ad237f0e930ee8804bdda308b00487e82bcd112
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/ui",
3
- "version": "55.0.0",
3
+ "version": "55.0.2",
4
4
  "description": "A collection of UI components",
5
5
  "sideEffects": [
6
6
  "*.fx.js"
@@ -60,5 +60,5 @@
60
60
  "react": "*",
61
61
  "react-native": "*"
62
62
  },
63
- "gitHead": "b183e5cbd95eb6ee54a878291c7077d8d63e4850"
63
+ "gitHead": "bcdd2c239f8a92cdf5140e35cde768352630acd6"
64
64
  }
@@ -0,0 +1,26 @@
1
+ import { requireNativeView } from 'expo';
2
+
3
+ import {
4
+ ContentAlignment,
5
+ FloatingToolbarExitAlwaysScrollBehavior,
6
+ PrimitiveBaseProps,
7
+ transformProps,
8
+ } from '../layout-types';
9
+
10
+ export type BoxProps = {
11
+ children?: React.ReactNode;
12
+ /**
13
+ * Alignment of children within the box.
14
+ */
15
+ contentAlignment?: ContentAlignment;
16
+ /**
17
+ * Scroll behavior for the floating toolbar exit.
18
+ */
19
+ floatingToolbarExitAlwaysScrollBehavior?: FloatingToolbarExitAlwaysScrollBehavior;
20
+ } & PrimitiveBaseProps;
21
+
22
+ const BoxNativeView: React.ComponentType<BoxProps> = requireNativeView('ExpoUI', 'BoxView');
23
+
24
+ export function Box(props: BoxProps) {
25
+ return <BoxNativeView {...transformProps(props)} />;
26
+ }
@@ -0,0 +1,39 @@
1
+ import { requireNativeView } from 'expo';
2
+
3
+ import {
4
+ HorizontalAlignment,
5
+ HorizontalArrangement,
6
+ PrimitiveBaseProps,
7
+ VerticalAlignment,
8
+ VerticalArrangement,
9
+ transformProps,
10
+ } from '../layout-types';
11
+
12
+ export type ColumnProps = {
13
+ children?: React.ReactNode;
14
+ /**
15
+ * Horizontal arrangement of children.
16
+ */
17
+ horizontalArrangement?: HorizontalArrangement;
18
+ /**
19
+ * Vertical arrangement of children.
20
+ */
21
+ verticalArrangement?: VerticalArrangement;
22
+ /**
23
+ * Horizontal alignment of children.
24
+ */
25
+ horizontalAlignment?: HorizontalAlignment;
26
+ /**
27
+ * Vertical alignment of children.
28
+ */
29
+ verticalAlignment?: VerticalAlignment;
30
+ } & PrimitiveBaseProps;
31
+
32
+ const ColumnNativeView: React.ComponentType<ColumnProps> = requireNativeView(
33
+ 'ExpoUI',
34
+ 'ColumnView'
35
+ );
36
+
37
+ export function Column(props: ColumnProps) {
38
+ return <ColumnNativeView {...transformProps(props)} />;
39
+ }
@@ -8,6 +8,96 @@ export type AndroidVariant = 'picker' | 'input';
8
8
 
9
9
  export type DisplayedComponents = 'date' | 'hourAndMinute' | 'dateAndTime';
10
10
 
11
+ /**
12
+ * Color overrides for the Material 3 DatePicker component.
13
+ * All properties are optional — unset values use Material 3 theme defaults.
14
+ */
15
+ export type DatePickerElementColors = {
16
+ /** The background color of the date picker. */
17
+ containerColor?: ColorValue;
18
+ /** The color used for the date picker's title. */
19
+ titleContentColor?: ColorValue;
20
+ /** The color used for the date picker's headline. */
21
+ headlineContentColor?: ColorValue;
22
+ /** The color used for the weekday letters (Mon, Tue, etc.). */
23
+ weekdayContentColor?: ColorValue;
24
+ /** The color used for the month and year subhead labels. */
25
+ subheadContentColor?: ColorValue;
26
+ /** The color used for navigation arrows and year selection menu button. */
27
+ navigationContentColor?: ColorValue;
28
+ /** The color used for year item content. */
29
+ yearContentColor?: ColorValue;
30
+ /** The color used for disabled year item content. */
31
+ disabledYearContentColor?: ColorValue;
32
+ /** The color used for the current year content. */
33
+ currentYearContentColor?: ColorValue;
34
+ /** The color used for the selected year content. */
35
+ selectedYearContentColor?: ColorValue;
36
+ /** The color used for a disabled selected year content. */
37
+ disabledSelectedYearContentColor?: ColorValue;
38
+ /** The color used for the selected year container/background. */
39
+ selectedYearContainerColor?: ColorValue;
40
+ /** The color used for a disabled selected year container. */
41
+ disabledSelectedYearContainerColor?: ColorValue;
42
+ /** The color used for day content (number text). */
43
+ dayContentColor?: ColorValue;
44
+ /** The color used for disabled day content. */
45
+ disabledDayContentColor?: ColorValue;
46
+ /** The color used for selected day content. */
47
+ selectedDayContentColor?: ColorValue;
48
+ /** The color used for a disabled selected day content. */
49
+ disabledSelectedDayContentColor?: ColorValue;
50
+ /** The color used for the selected day container/background circle. */
51
+ selectedDayContainerColor?: ColorValue;
52
+ /** The color used for a disabled selected day container. */
53
+ disabledSelectedDayContainerColor?: ColorValue;
54
+ /** The color used for today's date text. */
55
+ todayContentColor?: ColorValue;
56
+ /** The color used for today's date border. */
57
+ todayDateBorderColor?: ColorValue;
58
+ /** The content color for days within a date range selection. */
59
+ dayInSelectionRangeContentColor?: ColorValue;
60
+ /** The container color for days within a date range selection. */
61
+ dayInSelectionRangeContainerColor?: ColorValue;
62
+ /** The color used for divider lines. */
63
+ dividerColor?: ColorValue;
64
+ };
65
+
66
+ /**
67
+ * Color overrides for the Material 3 TimePicker component.
68
+ * All properties are optional — unset values use Material 3 theme defaults.
69
+ */
70
+ export type TimePickerElementColors = {
71
+ /** The container/background color of the time picker. */
72
+ containerColor?: ColorValue;
73
+ /** The background color of the clock dial. */
74
+ clockDialColor?: ColorValue;
75
+ /** The color of clock dial numbers when selected or overlapping the selector. */
76
+ clockDialSelectedContentColor?: ColorValue;
77
+ /** The color of clock dial numbers when unselected. */
78
+ clockDialUnselectedContentColor?: ColorValue;
79
+ /** The color of the clock dial selector (hand). */
80
+ selectorColor?: ColorValue;
81
+ /** The border color of the AM/PM period selector. */
82
+ periodSelectorBorderColor?: ColorValue;
83
+ /** The background color of the selected AM/PM period. */
84
+ periodSelectorSelectedContainerColor?: ColorValue;
85
+ /** The background color of the unselected AM/PM period. */
86
+ periodSelectorUnselectedContainerColor?: ColorValue;
87
+ /** The text color of the selected AM/PM period. */
88
+ periodSelectorSelectedContentColor?: ColorValue;
89
+ /** The text color of the unselected AM/PM period. */
90
+ periodSelectorUnselectedContentColor?: ColorValue;
91
+ /** The background color of the selected hour/minute segment. */
92
+ timeSelectorSelectedContainerColor?: ColorValue;
93
+ /** The background color of the unselected hour/minute segment. */
94
+ timeSelectorUnselectedContainerColor?: ColorValue;
95
+ /** The text color of the selected hour/minute segment. */
96
+ timeSelectorSelectedContentColor?: ColorValue;
97
+ /** The text color of the unselected hour/minute segment. */
98
+ timeSelectorUnselectedContentColor?: ColorValue;
99
+ };
100
+
11
101
  export type DateTimePickerProps = {
12
102
  /**
13
103
  * The initial date to display on the picker.
@@ -37,8 +127,19 @@ export type DateTimePickerProps = {
37
127
  displayedComponents?: DisplayedComponents;
38
128
  /**
39
129
  * The tint color to use on the picker elements.
130
+ * When `elementColors` is not provided, this color is applied to a subset of
131
+ * picker elements (selected day, title, headline, today border for date picker;
132
+ * selector, selected time segment, clock dial for time picker).
40
133
  */
41
134
  color?: ColorValue;
135
+ /**
136
+ * Fine-grained color overrides for individual picker elements.
137
+ * When provided, these take precedence over the `color` prop.
138
+ * Date picker color keys are used when `displayedComponents` is 'date' or 'dateAndTime'.
139
+ * Time picker color keys are used when `displayedComponents` is 'hourAndMinute'.
140
+ * Unset values fall back to Material 3 theme defaults.
141
+ */
142
+ elementColors?: DatePickerElementColors & TimePickerElementColors;
42
143
  /**
43
144
  * Determines what format the clock should be displayed in on Android.
44
145
  * @default true
@@ -52,14 +153,15 @@ export type DateTimePickerProps = {
52
153
 
53
154
  type NativeDatePickerProps = Omit<
54
155
  DateTimePickerProps,
55
- 'variant' | 'onDateSelected' | 'initialDate'
156
+ 'variant' | 'onDateSelected' | 'initialDate' | 'elementColors'
56
157
  > & {
57
158
  variant?: AndroidVariant;
58
159
  initialDate?: number | null;
160
+ elementColors?: DatePickerElementColors & TimePickerElementColors;
59
161
  } & ViewEvent<'onDateSelected', { date: Date }>;
60
162
 
61
163
  function transformDateTimePickerProps(props: DateTimePickerProps): NativeDatePickerProps {
62
- const { modifiers, variant, initialDate, ...rest } = props;
164
+ const { modifiers, variant, initialDate, elementColors, color, ...rest } = props;
63
165
 
64
166
  // Convert ISO string to timestamp for Android
65
167
  const initialDateTimestamp = initialDate ? new Date(initialDate).getTime() : null;
@@ -68,11 +170,13 @@ function transformDateTimePickerProps(props: DateTimePickerProps): NativeDatePic
68
170
  modifiers,
69
171
  ...(modifiers ? createViewModifierEventListener(modifiers) : undefined),
70
172
  ...rest,
173
+ color,
71
174
  initialDate: initialDateTimestamp,
72
175
  onDateSelected: ({ nativeEvent: { date } }) => {
73
176
  props?.onDateSelected?.(new Date(date));
74
177
  },
75
178
  variant,
179
+ ...(elementColors != null ? { elementColors } : {}),
76
180
  };
77
181
  }
78
182
 
@@ -0,0 +1,29 @@
1
+ import { requireNativeView } from 'expo';
2
+
3
+ import {
4
+ HorizontalArrangement,
5
+ PrimitiveBaseProps,
6
+ VerticalArrangement,
7
+ transformProps,
8
+ } from '../layout-types';
9
+
10
+ export type FlowRowProps = {
11
+ children?: React.ReactNode;
12
+ /**
13
+ * Horizontal arrangement of children.
14
+ */
15
+ horizontalArrangement?: HorizontalArrangement;
16
+ /**
17
+ * Vertical arrangement of children.
18
+ */
19
+ verticalArrangement?: VerticalArrangement;
20
+ } & PrimitiveBaseProps;
21
+
22
+ const FlowRowNativeView: React.ComponentType<FlowRowProps> = requireNativeView(
23
+ 'ExpoUI',
24
+ 'FlowRowView'
25
+ );
26
+
27
+ export function FlowRow(props: FlowRowProps) {
28
+ return <FlowRowNativeView {...transformProps(props)} />;
29
+ }
@@ -33,9 +33,6 @@ export type LazyColumnProps = {
33
33
  /**
34
34
  * The vertical arrangement of items.
35
35
  * Can be a preset string or an object with `spacedBy` to specify spacing in dp.
36
- * @example
37
- * verticalArrangement="center"
38
- * verticalArrangement={{ spacedBy: 8 }}
39
36
  */
40
37
  verticalArrangement?:
41
38
  | 'top'
@@ -0,0 +1,36 @@
1
+ import { requireNativeView } from 'expo';
2
+
3
+ import {
4
+ HorizontalAlignment,
5
+ HorizontalArrangement,
6
+ PrimitiveBaseProps,
7
+ VerticalAlignment,
8
+ VerticalArrangement,
9
+ transformProps,
10
+ } from '../layout-types';
11
+
12
+ export type RowProps = {
13
+ children?: React.ReactNode;
14
+ /**
15
+ * Horizontal arrangement of children.
16
+ */
17
+ horizontalArrangement?: HorizontalArrangement;
18
+ /**
19
+ * Vertical arrangement of children.
20
+ */
21
+ verticalArrangement?: VerticalArrangement;
22
+ /**
23
+ * Horizontal alignment of children.
24
+ */
25
+ horizontalAlignment?: HorizontalAlignment;
26
+ /**
27
+ * Vertical alignment of children.
28
+ */
29
+ verticalAlignment?: VerticalAlignment;
30
+ } & PrimitiveBaseProps;
31
+
32
+ const RowNativeView: React.ComponentType<RowProps> = requireNativeView('ExpoUI', 'RowView');
33
+
34
+ export function Row(props: RowProps) {
35
+ return <RowNativeView {...transformProps(props)} />;
36
+ }
@@ -5,7 +5,7 @@ import { createViewModifierEventListener } from '../modifiers/utils';
5
5
 
6
6
  export type SpacerProps = {
7
7
  /**
8
- * Modifiers for the component. Use weight() modifier to make the spacer flexible.
8
+ * Modifiers for the component. Use `weight()` modifier to make the spacer flexible.
9
9
  */
10
10
  modifiers?: ExpoModifier[];
11
11
  };
@@ -27,7 +27,7 @@ function transformProps(props: SpacerProps): NativeSpacerProps {
27
27
 
28
28
  /**
29
29
  * A spacer component that fills available space.
30
- * Use with the weight() modifier to create flexible spacing in Row or Column layouts.
30
+ * Use with the `weight()` modifier to create flexible spacing in `Row` or `Column` layouts.
31
31
  *
32
32
  * @example
33
33
  * ```tsx
@@ -12,8 +12,20 @@ import { createViewModifierEventListener } from '../modifiers/utils';
12
12
  type SwitchElementColors = {
13
13
  checkedThumbColor?: ColorValue;
14
14
  checkedTrackColor?: ColorValue;
15
+ checkedBorderColor?: ColorValue;
16
+ checkedIconColor?: ColorValue;
15
17
  uncheckedThumbColor?: ColorValue;
16
18
  uncheckedTrackColor?: ColorValue;
19
+ uncheckedBorderColor?: ColorValue;
20
+ uncheckedIconColor?: ColorValue;
21
+ disabledCheckedThumbColor?: ColorValue;
22
+ disabledCheckedTrackColor?: ColorValue;
23
+ disabledCheckedBorderColor?: ColorValue;
24
+ disabledCheckedIconColor?: ColorValue;
25
+ disabledUncheckedThumbColor?: ColorValue;
26
+ disabledUncheckedTrackColor?: ColorValue;
27
+ disabledUncheckedBorderColor?: ColorValue;
28
+ disabledUncheckedIconColor?: ColorValue;
17
29
  };
18
30
 
19
31
  // @docsMissing
@@ -46,6 +58,12 @@ export type SwitchProps = {
46
58
  * @default 'switch'
47
59
  */
48
60
  variant?: 'checkbox' | 'switch' | 'button';
61
+ /**
62
+ * Whether the switch is enabled.
63
+ * @default true
64
+ * @platform android
65
+ */
66
+ enabled?: boolean;
49
67
  /**
50
68
  * Callback function that is called when the checked state changes.
51
69
  */
@@ -34,5 +34,8 @@ export * from './RadioButton';
34
34
  export * from './Surface';
35
35
  export * from './Text';
36
36
 
37
- export * from './layout';
37
+ export * from './Box';
38
+ export * from './Row';
39
+ export * from './Column';
40
+ export * from './FlowRow';
38
41
  export { ViewEvent } from '../types';