@expo/ui 56.0.3 → 56.0.4

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 (60) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/android/build.gradle +2 -2
  3. package/build/universal/Button/index.d.ts.map +1 -1
  4. package/build/universal/Checkbox/index.d.ts.map +1 -1
  5. package/build/universal/Column/index.d.ts.map +1 -1
  6. package/build/universal/FieldGroup/FieldGroup.d.ts.map +1 -1
  7. package/build/universal/FieldGroup/FieldSection.d.ts.map +1 -1
  8. package/build/universal/Row/index.d.ts.map +1 -1
  9. package/build/universal/ScrollView/index.d.ts.map +1 -1
  10. package/build/universal/Slider/index.d.ts.map +1 -1
  11. package/build/universal/Spacer/index.d.ts.map +1 -1
  12. package/build/universal/Switch/index.d.ts.map +1 -1
  13. package/build/universal/Text/index.d.ts.map +1 -1
  14. package/expo-module.config.json +1 -1
  15. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3.module → 56.0.4/expo.modules.ui-56.0.4.module} +7 -7
  16. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.4/expo.modules.ui-56.0.4.module.md5 +1 -0
  17. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.4/expo.modules.ui-56.0.4.module.sha1 +1 -0
  18. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.4/expo.modules.ui-56.0.4.module.sha256 +1 -0
  19. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.4/expo.modules.ui-56.0.4.module.sha512 +1 -0
  20. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3.pom → 56.0.4/expo.modules.ui-56.0.4.pom} +1 -1
  21. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.4/expo.modules.ui-56.0.4.pom.md5 +1 -0
  22. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.4/expo.modules.ui-56.0.4.pom.sha1 +1 -0
  23. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.4/expo.modules.ui-56.0.4.pom.sha256 +1 -0
  24. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.4/expo.modules.ui-56.0.4.pom.sha512 +1 -0
  25. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
  26. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
  27. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
  28. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
  29. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
  30. package/package.json +3 -3
  31. package/src/ts-declarations/react-native-web.d.ts +112 -0
  32. package/src/universal/Button/index.tsx +37 -50
  33. package/src/universal/Checkbox/index.tsx +31 -18
  34. package/src/universal/Column/index.tsx +29 -18
  35. package/src/universal/FieldGroup/FieldGroup.tsx +24 -28
  36. package/src/universal/FieldGroup/FieldSection.tsx +62 -80
  37. package/src/universal/Row/index.tsx +37 -24
  38. package/src/universal/ScrollView/index.tsx +26 -15
  39. package/src/universal/Slider/index.tsx +21 -16
  40. package/src/universal/Spacer/index.tsx +18 -10
  41. package/src/universal/Switch/index.tsx +15 -10
  42. package/src/universal/Text/index.tsx +18 -37
  43. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.md5 +0 -1
  44. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.sha1 +0 -1
  45. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.sha256 +0 -1
  46. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.module.sha512 +0 -1
  47. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.md5 +0 -1
  48. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.sha1 +0 -1
  49. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.sha256 +0 -1
  50. package/local-maven-repo/expo/modules/ui/expo.modules.ui/56.0.3/expo.modules.ui-56.0.3.pom.sha512 +0 -1
  51. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3-sources.jar → 56.0.4/expo.modules.ui-56.0.4-sources.jar} +0 -0
  52. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3-sources.jar.md5 → 56.0.4/expo.modules.ui-56.0.4-sources.jar.md5} +0 -0
  53. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3-sources.jar.sha1 → 56.0.4/expo.modules.ui-56.0.4-sources.jar.sha1} +0 -0
  54. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3-sources.jar.sha256 → 56.0.4/expo.modules.ui-56.0.4-sources.jar.sha256} +0 -0
  55. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3-sources.jar.sha512 → 56.0.4/expo.modules.ui-56.0.4-sources.jar.sha512} +0 -0
  56. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3.aar → 56.0.4/expo.modules.ui-56.0.4.aar} +0 -0
  57. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3.aar.md5 → 56.0.4/expo.modules.ui-56.0.4.aar.md5} +0 -0
  58. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3.aar.sha1 → 56.0.4/expo.modules.ui-56.0.4.aar.sha1} +0 -0
  59. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3.aar.sha256 → 56.0.4/expo.modules.ui-56.0.4.aar.sha256} +0 -0
  60. /package/local-maven-repo/expo/modules/ui/expo.modules.ui/{56.0.3/expo.modules.ui-56.0.3.aar.sha512 → 56.0.4/expo.modules.ui-56.0.4.aar.sha512} +0 -0
package/CHANGELOG.md CHANGED
@@ -10,6 +10,12 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 56.0.4 — 2026-05-08
14
+
15
+ ### 💡 Others
16
+
17
+ - [universal] Refactored web components to use `StyleSheet.create` instead of inline styles, added `react-native-web` type declarations, and tightened prop handling. ([#45485](https://github.com/expo/expo/pull/45485) by [@zoontek](https://github.com/zoontek))
18
+
13
19
  ## 56.0.3 — 2026-05-07
14
20
 
15
21
  _This version does not introduce any user-facing changes._
@@ -12,13 +12,13 @@ apply plugin: 'expo-module-gradle-plugin'
12
12
  apply plugin: 'org.jetbrains.kotlin.plugin.compose'
13
13
 
14
14
  group = 'expo.modules.ui'
15
- version = '56.0.3'
15
+ version = '56.0.4'
16
16
 
17
17
  android {
18
18
  namespace "expo.modules.ui"
19
19
  defaultConfig {
20
20
  versionCode 1
21
- versionName "56.0.3"
21
+ versionName "56.0.4"
22
22
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
23
23
  }
24
24
  buildFeatures {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Button/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAC;AA2C1D;;GAEG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,KAAK,EACL,OAAO,EACP,OAAkB,EAClB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,WAAW,2CAyBb;AAED,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Button/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAC;AAoC1D;;GAEG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,KAAK,EACL,OAAO,EACP,OAAkB,EAClB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,QAAgB,EAChB,MAAc,EACd,MAAM,GACP,EAAE,WAAW,2CAoBb;AAED,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Checkbox/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,aAAa,2CAaxF;AAcD,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Checkbox/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAwB7C;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAgB,EAAE,MAAM,EAAE,EAAE,aAAa,2CAahG;AAED,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Column/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAU3C;;GAEG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,SAAmB,EACnB,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,WAAW,2CAmBb;AAED,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Column/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAmB3C;;GAEG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,SAAmB,EACnB,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAgB,EAChB,MAAc,EACd,MAAM,GACP,EAAE,WAAW,2CAqBb;AAED,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldGroup.d.ts","sourceRoot":"","sources":["../../../src/universal/FieldGroup/FieldGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAM,EACN,MAAM,GACP,EAAE,eAAe,2CAkBjB"}
1
+ {"version":3,"file":"FieldGroup.d.ts","sourceRoot":"","sources":["../../../src/universal/FieldGroup/FieldGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAqB/C;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAc,EACd,MAAM,GACP,EAAE,eAAe,2CAkBjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldSection.d.ts","sourceRoot":"","sources":["../../../src/universal/FieldGroup/FieldSection.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGjD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAM,EACN,MAAM,EACN,cAAsB,GACvB,EAAE,iBAAiB,2CA2CnB"}
1
+ {"version":3,"file":"FieldSection.d.ts","sourceRoot":"","sources":["../../../src/universal/FieldGroup/FieldSection.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAuDjD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAM,EACN,MAAM,EACN,cAAsB,GACvB,EAAE,iBAAiB,2CAsCnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Row/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAUxC;;GAEG;AACH,wBAAgB,GAAG,CAAC,EAClB,QAAQ,EACR,SAAmB,EACnB,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,QAAQ,2CAyBV;AAED,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Row/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA2BxC;;GAEG;AACH,wBAAgB,GAAG,CAAC,EAClB,QAAQ,EACR,SAAmB,EACnB,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAgB,EAChB,MAAc,EACd,MAAM,GACP,EAAE,QAAQ,2CAqBV;AAED,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/ScrollView/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,SAAsB,EACtB,eAAsB,EACtB,KAAK,EAGL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,eAAe,2CA+BjB;AAED,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/ScrollView/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkB/C;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,SAAsB,EACtB,eAAsB,EACtB,KAAK,EAGL,QAAQ,EACR,WAAW,EACX,QAAgB,EAChB,MAAc,EACd,MAAM,GACP,EAAE,eAAe,2CA2BjB;AAED,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Slider/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,aAAa,EACb,GAAO,EACP,GAAO,EACP,IAAI,EACJ,QAAQ,EACR,MAAM,GACP,EAAE,WAAW,2CAgBb;AAYD,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Slider/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAiB3C;;GAEG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,aAAa,EACb,GAAO,EACP,GAAO,EACP,IAAI,EACJ,QAAgB,EAChB,MAAM,GACP,EAAE,WAAW,2CAeb;AAED,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Spacer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,QAAgB,EAChB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAM,EACN,MAAM,GACP,EAAE,WAAW,2CAWb;AAED,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Spacer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQ3C;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,QAAgB,EAChB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAc,EACd,MAAM,GACP,EAAE,WAAW,2CAcb;AAED,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Switch/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,2CAoBpF;AAED,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Switch/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAc3C;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAgB,EAAE,MAAM,EAAE,EAAE,WAAW,2CAa5F;AAED,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Text/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC;;GAEG;AACH,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,SAAS,EACT,aAAa,EACb,KAAK,EACL,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,SAAS,2CA+BX;AAkBD,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/universal/Text/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAUzC;;GAEG;AACH,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,SAAS,EACT,aAAa,EACb,KAAK,EACL,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAgB,EAChB,MAAc,EACd,MAAM,GACP,EAAE,SAAS,2CAqBX;AAED,cAAc,SAAS,CAAC"}
@@ -10,7 +10,7 @@
10
10
  "publication": {
11
11
  "groupId": "expo.modules.ui",
12
12
  "artifactId": "expo.modules.ui",
13
- "version": "56.0.3",
13
+ "version": "56.0.4",
14
14
  "repository": "local-maven-repo"
15
15
  }
16
16
  }
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.ui",
5
5
  "module": "expo.modules.ui",
6
- "version": "56.0.3",
6
+ "version": "56.0.4",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.ui-56.0.3.aar",
28
- "url": "expo.modules.ui-56.0.3.aar",
27
+ "name": "expo.modules.ui-56.0.4.aar",
28
+ "url": "expo.modules.ui-56.0.4.aar",
29
29
  "size": 1740154,
30
30
  "sha512": "24e656ae1e397c8abea2fb5a2d49bc826a58f84afd58b3104ff22cede3fcf720f86ac532223279fa5efda5c402d0c75f3ab700bdcbb5b0847c2618028243c04c",
31
31
  "sha256": "c04258a22308940aa735f6f81a47fa83d842db257c39396b2e3d9007cb6802fb",
@@ -141,8 +141,8 @@
141
141
  ],
142
142
  "files": [
143
143
  {
144
- "name": "expo.modules.ui-56.0.3.aar",
145
- "url": "expo.modules.ui-56.0.3.aar",
144
+ "name": "expo.modules.ui-56.0.4.aar",
145
+ "url": "expo.modules.ui-56.0.4.aar",
146
146
  "size": 1740154,
147
147
  "sha512": "24e656ae1e397c8abea2fb5a2d49bc826a58f84afd58b3104ff22cede3fcf720f86ac532223279fa5efda5c402d0c75f3ab700bdcbb5b0847c2618028243c04c",
148
148
  "sha256": "c04258a22308940aa735f6f81a47fa83d842db257c39396b2e3d9007cb6802fb",
@@ -161,8 +161,8 @@
161
161
  },
162
162
  "files": [
163
163
  {
164
- "name": "expo.modules.ui-56.0.3-sources.jar",
165
- "url": "expo.modules.ui-56.0.3-sources.jar",
164
+ "name": "expo.modules.ui-56.0.4-sources.jar",
165
+ "url": "expo.modules.ui-56.0.4-sources.jar",
166
166
  "size": 82167,
167
167
  "sha512": "788dc7a233524ec8b7eed4a0f242bf546284f3a2ea501806e2e90047c3221702430584413d684677dc330195a378feed1bb1956e2d980c8f689ebce716cf54b6",
168
168
  "sha256": "e144b778f1df5f7e73be22ffe120819c376f3309599468cc22a5c5528ce3ad84",
@@ -0,0 +1 @@
1
+ 0e06cad6985db57df681002fe110d3b7b4abdd3a
@@ -0,0 +1 @@
1
+ e68cdab048fade6260bdcb13e26dfcbbdf9b32f93cf906853739a20ac9159cf2
@@ -0,0 +1 @@
1
+ 19fdcfa01a7b33c136b6d6602b86fda5d41c915782b7a4e62ee775c86c9274f1f358f59aef042b3f05b563977899ead45052f2a3050ec3e7a11e0bee4683c13b
@@ -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.3</version>
12
+ <version>56.0.4</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
+ 578fe568a309a9a5eabd852ac4ac683ab90a1425
@@ -0,0 +1 @@
1
+ 68ca52a8f7523da45ec6d5ea6c32cc43e79cb03f4ce419ca0045b0d7a37d88cd
@@ -0,0 +1 @@
1
+ 5846b988314dfe489a315a6867b90bb18b754eff1ddda8372c37a8255fc1b4720cbf849161c63f3e77612d5a94671b10c06455566a5a862e5c9d3609a8591b03
@@ -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.3</latest>
7
- <release>56.0.3</release>
6
+ <latest>56.0.4</latest>
7
+ <release>56.0.4</release>
8
8
  <versions>
9
- <version>56.0.3</version>
9
+ <version>56.0.4</version>
10
10
  </versions>
11
- <lastUpdated>20260507183248</lastUpdated>
11
+ <lastUpdated>20260508193741</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- 2702a9cd8caa702a371daaa128e279b6
1
+ 0353edd352ef8d23fd2c25605acce957
@@ -1 +1 @@
1
- 28b12bfa1f6047e1d7d83a26d0634e6ea132984d
1
+ 1be87e0b21c297d2164f2c6cce94471c3f08282a
@@ -1 +1 @@
1
- bec6765e9b4021cab658bdd7166664ad2965e243fe454dceb03eee957a882710
1
+ 9eddcd5edc295d99bcb6a5b1a2b56feeddcf04eccd4b0c850a2ebf3aa44a8431
@@ -1 +1 @@
1
- 7d81095908e1c9f3e0480cb0787557ebc93b0721ba5da187bbabf0b2efb1f05ca77ff00d9fac3de537706e203024f5439428a890074ef651b619864bd44e2d44
1
+ fa71ba728a32752b3b8d26ccd45cb960c27b569b108ed1eb545600621a2b0e9e6839c3fc4cefe5bce0c2b498aa76fdc06d271db7f86e9815ba765ee048501653
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/ui",
3
- "version": "56.0.3",
3
+ "version": "56.0.4",
4
4
  "description": "A collection of UI components",
5
5
  "sideEffects": [
6
6
  "*.fx.js"
@@ -83,7 +83,7 @@
83
83
  "@types/react": "~19.2.0",
84
84
  "react-native-reanimated": "4.3.0",
85
85
  "react-native-worklets": "0.8.3",
86
- "expo": "56.0.0-preview.6",
86
+ "expo": "56.0.0-preview.7",
87
87
  "expo-module-scripts": "56.0.2"
88
88
  },
89
89
  "jest": {
@@ -112,7 +112,7 @@
112
112
  "optional": true
113
113
  }
114
114
  },
115
- "gitHead": "d7b4e5edff4bf2e619d2c2f16d158798c6d592ef",
115
+ "gitHead": "a30353e69ca0d72b9fac5830abc631feda1ba3ae",
116
116
  "scripts": {
117
117
  "build": "expo-module build",
118
118
  "clean": "expo-module clean",
@@ -0,0 +1,112 @@
1
+ import * as ReactNative from 'react-native';
2
+
3
+ declare module 'react-native' {
4
+ export const unstable_createElement: <P>(
5
+ type: React.ElementType,
6
+ props?: P
7
+ ) => React.ReactElement<P>;
8
+
9
+ type DisplayValue = ReactNative.FlexStyle['display'] | 'inline-flex';
10
+
11
+ type WebRole =
12
+ | ReactNative.Role
13
+ /**
14
+ * Accessibility roles mapped to components
15
+ * @see https://github.com/necolas/react-native-web/blob/0.19.1/packages/react-native-web/src/modules/AccessibilityUtil/propsToAccessibilityComponent.js
16
+ */
17
+ | 'article' // <article />
18
+ | 'banner' // <header />
19
+ | 'blockquote' // <blockquote />
20
+ | 'button' // <button />
21
+ | 'code' // <code />
22
+ | 'complementary' // <aside />
23
+ | 'contentinfo' // <footer />
24
+ | 'deletion' // <del />
25
+ | 'emphasis' // <em />
26
+ | 'figure' // <figure />
27
+ | 'form' // <form />
28
+ | 'heading' // <h{1,6} />
29
+ | 'insertion' // <ins />
30
+ | 'label' // <label />
31
+ | 'list' // <ul />
32
+ | 'listitem' // <li />
33
+ | 'main' // <main />
34
+ | 'navigation' // <nav />
35
+ | 'paragraph' // <p />
36
+ | 'region' // <section />
37
+ | 'strong'; // <strong />
38
+
39
+ interface WebAccessibilityProps {
40
+ /**
41
+ * Additional accessibility props
42
+ */
43
+ tabIndex?: 0 | -1;
44
+
45
+ /**
46
+ * Aria props (additional, minus existants)
47
+ * @see https://necolas.github.io/react-native-web/docs/accessibility
48
+ * @see https://reactnative.dev/docs/accessibility#aria-valuemax
49
+ */
50
+ 'aria-activedescendant'?: string;
51
+ 'aria-atomic'?: boolean;
52
+ 'aria-autocomplete'?: string;
53
+ 'aria-colcount'?: number;
54
+ 'aria-colindex'?: number;
55
+ 'aria-colspan'?: number;
56
+ 'aria-controls'?: string;
57
+ 'aria-current'?: boolean | 'page' | 'step' | 'location' | 'date' | 'time';
58
+ 'aria-describedby'?: string;
59
+ 'aria-details'?: string;
60
+ 'aria-errormessage'?: string;
61
+ 'aria-flowto'?: string;
62
+ 'aria-haspopup'?: string;
63
+ 'aria-invalid'?: boolean;
64
+ 'aria-keyshortcuts'?: string;
65
+ 'aria-level'?: number;
66
+ 'aria-multiline'?: boolean;
67
+ 'aria-multiselectable'?: boolean;
68
+ 'aria-orientation'?: 'horizontal' | 'vertical';
69
+ 'aria-owns'?: string;
70
+ 'aria-placeholder'?: string;
71
+ 'aria-posinset'?: number;
72
+ 'aria-pressed'?: boolean;
73
+ 'aria-readonly'?: boolean;
74
+ 'aria-required'?: boolean;
75
+ 'aria-roledescription'?: string;
76
+ 'aria-rowcount'?: number;
77
+ 'aria-rowindex'?: number;
78
+ 'aria-rowspan'?: number;
79
+ 'aria-setsize'?: number;
80
+ 'aria-sort'?: 'ascending' | 'descending' | 'none' | 'other';
81
+ }
82
+
83
+ export interface PressableStateCallbackType {
84
+ readonly focused: boolean;
85
+ readonly hovered: boolean;
86
+ readonly pressed: boolean;
87
+ }
88
+
89
+ export interface ImageProps extends WebAccessibilityProps {
90
+ role?: WebRole;
91
+ }
92
+
93
+ export interface TextProps extends WebAccessibilityProps {
94
+ role?: WebRole;
95
+ }
96
+
97
+ export interface ViewProps extends WebAccessibilityProps {
98
+ role?: WebRole;
99
+ }
100
+
101
+ export interface ImageStyle {
102
+ display?: DisplayValue;
103
+ }
104
+
105
+ export interface TextStyle {
106
+ display?: DisplayValue;
107
+ }
108
+
109
+ export interface ViewStyle {
110
+ display?: DisplayValue;
111
+ }
112
+ }
@@ -1,48 +1,40 @@
1
- import { useState } from 'react';
2
- import { Pressable, Text, type ViewStyle } from 'react-native';
1
+ import { Pressable, StyleSheet, Text, type TextStyle, type ViewStyle } from 'react-native';
3
2
 
4
3
  import type { ButtonProps, ButtonVariant } from './types';
5
4
  import { useUniversalLifecycle } from '../hooks';
6
5
 
7
- const variantStyles: Record<ButtonVariant, ViewStyle> = {
8
- filled: {
9
- backgroundColor: '#007AFF',
6
+ const styles = StyleSheet.create({
7
+ button: {
10
8
  paddingHorizontal: 16,
11
9
  paddingVertical: 10,
12
10
  borderRadius: 8,
11
+ userSelect: 'none',
13
12
  },
13
+ disabled: { opacity: 0.5 },
14
+ hidden: { display: 'none' },
15
+ label: { textAlign: 'center' },
16
+ });
17
+
18
+ const variantStyles = StyleSheet.create({
19
+ filled: { backgroundColor: '#007AFF' },
14
20
  outlined: {
15
- backgroundColor: 'transparent',
16
- paddingHorizontal: 16,
17
- paddingVertical: 10,
18
- borderRadius: 8,
19
- borderWidth: 1,
20
21
  borderColor: '#007AFF',
22
+ borderWidth: 1,
21
23
  },
22
- text: {
23
- backgroundColor: 'transparent',
24
- paddingHorizontal: 16,
25
- paddingVertical: 10,
26
- },
27
- };
24
+ text: {},
25
+ } satisfies Record<ButtonVariant, ViewStyle>);
28
26
 
29
- const variantHoverStyles: Record<ButtonVariant, ViewStyle> = {
30
- filled: {
31
- backgroundColor: '#0066DB',
32
- },
33
- outlined: {
34
- backgroundColor: 'rgba(0, 122, 255, 0.08)',
35
- },
36
- text: {
37
- backgroundColor: 'rgba(0, 122, 255, 0.08)',
38
- },
39
- };
27
+ const variantHoverStyles = StyleSheet.create({
28
+ filled: { backgroundColor: '#0066DB' },
29
+ outlined: { backgroundColor: 'rgba(0, 122, 255, 0.08)' },
30
+ text: { backgroundColor: 'rgba(0, 122, 255, 0.08)' },
31
+ } satisfies Record<ButtonVariant, ViewStyle>);
40
32
 
41
- const variantTextColors: Record<ButtonVariant, string> = {
42
- filled: '#FFFFFF',
43
- outlined: '#007AFF',
44
- text: '#007AFF',
45
- };
33
+ const variantLabelStyles = StyleSheet.create({
34
+ filled: { color: '#FFFFFF' },
35
+ outlined: { color: '#007AFF' },
36
+ text: { color: '#007AFF' },
37
+ } satisfies Record<ButtonVariant, TextStyle>);
46
38
 
47
39
  /**
48
40
  * A pressable button that supports multiple visual variants.
@@ -55,32 +47,27 @@ export function Button({
55
47
  style,
56
48
  onAppear,
57
49
  onDisappear,
58
- disabled,
59
- hidden,
50
+ disabled = false,
51
+ hidden = false,
60
52
  testID,
61
53
  }: ButtonProps) {
62
54
  useUniversalLifecycle(onAppear, onDisappear);
63
- const [hovered, setHovered] = useState(false);
64
-
65
- const pressableStyle: ViewStyle = {
66
- ...variantStyles[variant],
67
- ...style,
68
- ...(hovered && !disabled ? variantHoverStyles[variant] : undefined),
69
- ...(hidden ? { display: 'none' } : undefined),
70
- ...(disabled ? { opacity: 0.5 } : undefined),
71
- };
72
55
 
73
56
  return (
74
57
  <Pressable
75
- style={pressableStyle}
58
+ role="button"
76
59
  onPress={onPress}
77
- onHoverIn={() => setHovered(true)}
78
- onHoverOut={() => setHovered(false)}
79
60
  disabled={disabled}
80
- testID={testID}>
81
- {children ?? (
82
- <Text style={{ color: variantTextColors[variant], textAlign: 'center' }}>{label}</Text>
83
- )}
61
+ testID={testID}
62
+ style={({ hovered }) => [
63
+ styles.button,
64
+ variantStyles[variant],
65
+ style,
66
+ hovered && !disabled && variantHoverStyles[variant],
67
+ hidden && styles.hidden,
68
+ disabled && styles.disabled,
69
+ ]}>
70
+ {children ?? <Text style={[styles.label, variantLabelStyles[variant]]}>{label}</Text>}
84
71
  </Pressable>
85
72
  );
86
73
  }
@@ -1,33 +1,46 @@
1
+ import type { ComponentProps } from 'react';
2
+ import { StyleSheet, Text, unstable_createElement, View, type ViewProps } from 'react-native';
3
+
1
4
  import type { CheckboxProps } from './types';
2
5
 
6
+ const styles = StyleSheet.create({
7
+ label: {
8
+ flexDirection: 'row',
9
+ display: 'inline-flex',
10
+ alignItems: 'center',
11
+ gap: 8,
12
+ cursor: 'pointer',
13
+ },
14
+ disabled: {
15
+ opacity: 0.5,
16
+ cursor: 'auto',
17
+ },
18
+ cursorInherit: {
19
+ // @ts-expect-error
20
+ cursor: 'inherit',
21
+ },
22
+ });
23
+
24
+ const NativeCheckbox = (
25
+ props: Omit<ComponentProps<'input'>, 'style' | 'type'> & { style?: ViewProps['style'] }
26
+ ) => unstable_createElement('input', { ...props, type: 'checkbox' });
27
+
3
28
  /**
4
29
  * A toggle control that represents a checked or unchecked state.
5
30
  */
6
- export function Checkbox({ value, onValueChange, label, disabled, testID }: CheckboxProps) {
31
+ export function Checkbox({ value, onValueChange, label, disabled = false, testID }: CheckboxProps) {
7
32
  return (
8
- <label style={{ ...labelStyle, ...(disabled ? disabledStyle : undefined) }}>
9
- <input
10
- type="checkbox"
33
+ <View role="label" aria-disabled={disabled} style={[styles.label, disabled && styles.disabled]}>
34
+ <NativeCheckbox
11
35
  checked={value}
12
36
  onChange={(e) => onValueChange(e.target.checked)}
13
37
  disabled={disabled}
14
38
  data-testid={testID}
39
+ style={styles.cursorInherit}
15
40
  />
16
- {label != null && <span>{label}</span>}
17
- </label>
41
+ {label != null && <Text>{label}</Text>}
42
+ </View>
18
43
  );
19
44
  }
20
45
 
21
- const labelStyle: React.CSSProperties = {
22
- display: 'inline-flex',
23
- alignItems: 'center',
24
- gap: 8,
25
- cursor: 'pointer',
26
- };
27
-
28
- const disabledStyle: React.CSSProperties = {
29
- opacity: 0.5,
30
- cursor: 'default',
31
- };
32
-
33
46
  export * from './types';
@@ -1,14 +1,23 @@
1
- import { Pressable, View, type ViewStyle } from 'react-native';
1
+ import { Pressable, StyleSheet, View, type ViewStyle } from 'react-native';
2
2
 
3
3
  import type { ColumnProps } from './types';
4
4
  import { useUniversalLifecycle } from '../hooks';
5
5
  import type { UniversalAlignment } from '../types';
6
6
 
7
- const alignmentMap: Record<UniversalAlignment, ViewStyle['alignItems']> = {
8
- start: 'flex-start',
9
- center: 'center',
10
- end: 'flex-end',
11
- };
7
+ const styles = StyleSheet.create({
8
+ column: { flexDirection: 'column' },
9
+ hidden: { display: 'none' },
10
+ disabled: {
11
+ opacity: 0.5,
12
+ pointerEvents: 'none',
13
+ },
14
+ });
15
+
16
+ const alignmentStyles = StyleSheet.create({
17
+ start: { alignItems: 'flex-start' },
18
+ center: { alignItems: 'center' },
19
+ end: { alignItems: 'flex-end' },
20
+ } satisfies Record<UniversalAlignment, ViewStyle>);
12
21
 
13
22
  /**
14
23
  * A vertical layout container that arranges its children from top to bottom.
@@ -21,25 +30,27 @@ export function Column({
21
30
  onPress,
22
31
  onAppear,
23
32
  onDisappear,
24
- disabled,
25
- hidden,
33
+ disabled = false,
34
+ hidden = false,
26
35
  testID,
27
36
  }: ColumnProps) {
28
37
  useUniversalLifecycle(onAppear, onDisappear);
29
38
 
30
- const viewStyle: ViewStyle = {
31
- flexDirection: 'column',
32
- alignItems: alignmentMap[alignment],
33
- gap: spacing,
34
- ...style,
35
- ...(hidden ? { display: 'none' } : undefined),
36
- ...(disabled ? { opacity: 0.5, pointerEvents: 'none' } : undefined),
37
- };
38
-
39
39
  const Container = onPress ? Pressable : View;
40
40
 
41
41
  return (
42
- <Container style={viewStyle} onPress={onPress} disabled={disabled} testID={testID}>
42
+ <Container
43
+ onPress={onPress}
44
+ disabled={disabled}
45
+ testID={testID}
46
+ style={[
47
+ styles.column,
48
+ alignmentStyles[alignment],
49
+ spacing != null && { gap: spacing },
50
+ style,
51
+ hidden && styles.hidden,
52
+ disabled && styles.disabled,
53
+ ]}>
43
54
  {children}
44
55
  </Container>
45
56
  );