@expo/ui 58.0.21 → 58.0.22

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 (113) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +86 -2
  3. package/android/build.gradle +2 -2
  4. package/android/src/main/java/expo/modules/ui/CompositionLocalProviderView.kt +26 -0
  5. package/android/src/main/java/expo/modules/ui/ExpoUIModule.kt +12 -0
  6. package/android/src/main/java/expo/modules/ui/HostView.kt +4 -1
  7. package/android/src/main/java/expo/modules/ui/MaskView.kt +3 -2
  8. package/android/src/main/java/expo/modules/ui/ModifierRegistry.kt +3 -1
  9. package/android/src/main/java/expo/modules/ui/RNHostView.kt +11 -7
  10. package/android/src/main/java/expo/modules/ui/SwitchView.kt +6 -1
  11. package/android/src/main/java/expo/modules/ui/TopAppBarView.kt +62 -0
  12. package/android/src/main/java/expo/modules/ui/colors/MaterialColors.kt +61 -0
  13. package/build/community/bottom-sheet/BottomSheet.ios.js +8 -3
  14. package/build/community/bottom-sheet/BottomSheet.ios.js.map +1 -1
  15. package/build/community/pager-view/PagerView.ios.js +25 -8
  16. package/build/community/pager-view/PagerView.ios.js.map +1 -1
  17. package/build/community/segmented-control/SegmentedControl.ios.js +11 -2
  18. package/build/community/segmented-control/SegmentedControl.ios.js.map +1 -1
  19. package/build/community/segmented-control/types.d.ts +5 -1
  20. package/build/community/segmented-control/types.js.map +1 -1
  21. package/build/jetpack-compose/CompositionLocalProvider/index.d.ts +28 -0
  22. package/build/jetpack-compose/CompositionLocalProvider/index.js +15 -0
  23. package/build/jetpack-compose/CompositionLocalProvider/index.js.map +1 -0
  24. package/build/jetpack-compose/Host/index.d.ts +8 -0
  25. package/build/jetpack-compose/Host/index.js +38 -5
  26. package/build/jetpack-compose/Host/index.js.map +1 -1
  27. package/build/jetpack-compose/Switch/index.d.ts +2 -0
  28. package/build/jetpack-compose/Switch/index.js +1 -0
  29. package/build/jetpack-compose/Switch/index.js.map +1 -1
  30. package/build/jetpack-compose/TopAppBar/index.d.ts +72 -0
  31. package/build/jetpack-compose/TopAppBar/index.js +45 -0
  32. package/build/jetpack-compose/TopAppBar/index.js.map +1 -0
  33. package/build/jetpack-compose/index.d.ts +2 -0
  34. package/build/jetpack-compose/index.js +2 -0
  35. package/build/jetpack-compose/index.js.map +1 -1
  36. package/build/jetpack-compose/modifiers/index.d.ts +5 -1
  37. package/build/jetpack-compose/modifiers/index.js +6 -2
  38. package/build/jetpack-compose/modifiers/index.js.map +1 -1
  39. package/build/swift-ui/BottomSheet/index.d.ts +6 -0
  40. package/build/swift-ui/BottomSheet/index.js +9 -3
  41. package/build/swift-ui/BottomSheet/index.js.map +1 -1
  42. package/build/universal/Checkbox/index.android.js +16 -4
  43. package/build/universal/Checkbox/index.android.js.map +1 -1
  44. package/build/universal/ScrollView/index.ios.js +12 -6
  45. package/build/universal/ScrollView/index.ios.js.map +1 -1
  46. package/build/universal/Switch/index.android.js +17 -4
  47. package/build/universal/Switch/index.android.js.map +1 -1
  48. package/build/universal/Switch/index.js +1 -0
  49. package/build/universal/Switch/index.js.map +1 -1
  50. package/build/universal/Text/index.js +2 -2
  51. package/build/universal/Text/index.js.map +1 -1
  52. package/build/universal/webUtils.js +4 -0
  53. package/build/universal/webUtils.js.map +1 -1
  54. package/ios/BottomSheetView.swift +11 -2
  55. package/ios/DatePickerView.swift +134 -9
  56. package/ios/Modifiers/SelectedSegmentTintColorModifier.swift +86 -0
  57. package/ios/Modifiers/ViewModifierRegistry.swift +4 -0
  58. package/ios/RNHostView.swift +34 -16
  59. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.21/expo.modules.ui-58.0.21-sources.jar → 58.0.22/expo.modules.ui-58.0.22-sources.jar} +0 -0
  60. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22-sources.jar.md5 +1 -0
  61. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22-sources.jar.sha1 +1 -0
  62. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22-sources.jar.sha256 +1 -0
  63. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22-sources.jar.sha512 +1 -0
  64. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.aar +0 -0
  65. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.aar.md5 +1 -0
  66. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.aar.sha1 +1 -0
  67. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.aar.sha256 +1 -0
  68. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.aar.sha512 +1 -0
  69. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.21/expo.modules.ui-58.0.21.module → 58.0.22/expo.modules.ui-58.0.22.module} +22 -22
  70. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.module.md5 +1 -0
  71. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.module.sha1 +1 -0
  72. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.module.sha256 +1 -0
  73. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.module.sha512 +1 -0
  74. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.21/expo.modules.ui-58.0.21.pom → 58.0.22/expo.modules.ui-58.0.22.pom} +1 -1
  75. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.pom.md5 +1 -0
  76. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.pom.sha1 +1 -0
  77. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.pom.sha256 +1 -0
  78. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.22/expo.modules.ui-58.0.22.pom.sha512 +1 -0
  79. package/package.json +2 -2
  80. package/src/community/bottom-sheet/BottomSheet.ios.tsx +7 -3
  81. package/src/community/pager-view/PagerView.ios.tsx +25 -8
  82. package/src/community/segmented-control/SegmentedControl.ios.tsx +13 -1
  83. package/src/community/segmented-control/types.tsx +5 -1
  84. package/src/jetpack-compose/CompositionLocalProvider/index.tsx +43 -0
  85. package/src/jetpack-compose/Host/index.tsx +50 -4
  86. package/src/jetpack-compose/Switch/index.tsx +4 -0
  87. package/src/jetpack-compose/TopAppBar/index.tsx +113 -0
  88. package/src/jetpack-compose/index.ts +2 -0
  89. package/src/jetpack-compose/modifiers/index.ts +11 -3
  90. package/src/swift-ui/BottomSheet/index.tsx +24 -3
  91. package/src/universal/Checkbox/index.android.tsx +24 -5
  92. package/src/universal/ScrollView/index.ios.tsx +14 -3
  93. package/src/universal/Switch/index.android.tsx +23 -4
  94. package/src/universal/Switch/index.tsx +1 -0
  95. package/src/universal/Text/index.tsx +2 -2
  96. package/src/universal/webUtils.ts +4 -0
  97. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21-sources.jar.md5 +0 -1
  98. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21-sources.jar.sha1 +0 -1
  99. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21-sources.jar.sha256 +0 -1
  100. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21-sources.jar.sha512 +0 -1
  101. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.aar +0 -0
  102. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.aar.md5 +0 -1
  103. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.aar.sha1 +0 -1
  104. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.aar.sha256 +0 -1
  105. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.aar.sha512 +0 -1
  106. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.module.md5 +0 -1
  107. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.module.sha1 +0 -1
  108. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.module.sha256 +0 -1
  109. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.module.sha512 +0 -1
  110. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.pom.md5 +0 -1
  111. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.pom.sha1 +0 -1
  112. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.pom.sha256 +0 -1
  113. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.21/expo.modules.ui-58.0.21.pom.sha512 +0 -1
@@ -1,8 +1,15 @@
1
1
  import { Checkbox as ComposeCheckbox, Row, Text } from '@expo/ui/jetpack-compose';
2
- import { clickable, testID as testIDModifier } from '@expo/ui/jetpack-compose/modifiers';
2
+ import {
3
+ defaultMinSize,
4
+ testID as testIDModifier,
5
+ toggleable,
6
+ } from '@expo/ui/jetpack-compose/modifiers';
3
7
 
4
8
  import type { CheckboxProps } from './types';
5
9
 
10
+ // Material's minimum touch target.
11
+ const MIN_INTERACTIVE_SIZE = 48;
12
+
6
13
  export function Checkbox({
7
14
  value,
8
15
  onValueChange,
@@ -11,22 +18,34 @@ export function Checkbox({
11
18
  testID,
12
19
  modifiers,
13
20
  }: CheckboxProps) {
21
+ const isLabeled = label != null;
14
22
  const checkbox = (
15
23
  <ComposeCheckbox
16
24
  value={value}
17
- onCheckedChange={disabled ? undefined : onValueChange}
25
+ onCheckedChange={isLabeled ? undefined : onValueChange}
18
26
  enabled={!disabled}
19
- modifiers={[...(modifiers ?? []), ...(testID ? [testIDModifier(testID)] : [])]}
27
+ modifiers={[
28
+ ...(modifiers ?? []),
29
+ ...(isLabeled
30
+ ? [defaultMinSize({ minWidth: MIN_INTERACTIVE_SIZE, minHeight: MIN_INTERACTIVE_SIZE })]
31
+ : []),
32
+ ...(testID ? [testIDModifier(testID)] : []),
33
+ ]}
20
34
  />
21
35
  );
22
36
 
23
- if (label == null) return checkbox;
37
+ if (!isLabeled) return checkbox;
24
38
 
25
39
  return (
26
40
  <Row
27
41
  verticalAlignment="center"
28
42
  horizontalArrangement={{ spacedBy: 8 }}
29
- modifiers={[clickable(() => !disabled && onValueChange(!value))]}>
43
+ modifiers={[
44
+ toggleable(value, () => !disabled && onValueChange(!value), {
45
+ role: 'checkbox',
46
+ enabled: !disabled,
47
+ }),
48
+ ]}>
30
49
  {checkbox}
31
50
  <Text>{label}</Text>
32
51
  </Row>
@@ -1,4 +1,4 @@
1
- import { Group, ScrollView as SwiftUIScrollView } from '@expo/ui/swift-ui';
1
+ import { HStack, ScrollView as SwiftUIScrollView, VStack } from '@expo/ui/swift-ui';
2
2
  import { frame, padding } from '@expo/ui/swift-ui/modifiers';
3
3
  import type { ModifierConfig } from '@expo/ui/swift-ui/modifiers';
4
4
 
@@ -18,7 +18,7 @@ export function ScrollView({
18
18
  testID,
19
19
  modifiers: extraModifiers,
20
20
  }: ScrollViewProps) {
21
- // Extract padding from style — it goes on the inner Group so content is
21
+ // Extract padding from style — it goes on the inner stack so content is
22
22
  // inset after stretching to full width.
23
23
  const {
24
24
  padding: paddingAll,
@@ -64,13 +64,24 @@ export function ScrollView({
64
64
  );
65
65
  }
66
66
 
67
+ const stack =
68
+ direction === 'horizontal' ? (
69
+ <HStack alignment="top" modifiers={innerModifiers}>
70
+ {children}
71
+ </HStack>
72
+ ) : (
73
+ <VStack alignment="leading" modifiers={innerModifiers}>
74
+ {children}
75
+ </VStack>
76
+ );
77
+
67
78
  return (
68
79
  <SwiftUIScrollView
69
80
  axes={direction}
70
81
  showsIndicators={showsIndicators}
71
82
  modifiers={scrollModifiers}
72
83
  testID={testID}>
73
- <Group modifiers={innerModifiers}>{children}</Group>
84
+ {stack}
74
85
  </SwiftUIScrollView>
75
86
  );
76
87
  }
@@ -1,31 +1,50 @@
1
1
  import { Row, Switch as ComposeSwitch, Text } from '@expo/ui/jetpack-compose';
2
2
  import {
3
+ defaultMinSize,
3
4
  fillMaxWidth,
4
5
  IntrinsicSize,
5
6
  testID as testIDModifier,
7
+ toggleable,
6
8
  weight,
7
9
  width,
8
10
  } from '@expo/ui/jetpack-compose/modifiers';
9
11
 
10
12
  import type { SwitchProps } from './types';
11
13
 
14
+ // Material's minimum touch target.
15
+ const MIN_INTERACTIVE_SIZE = 48;
16
+
12
17
  export function Switch({ value, onValueChange, label, disabled, testID, modifiers }: SwitchProps) {
18
+ const isLabeled = label != null;
13
19
  const toggle = (
14
20
  <ComposeSwitch
15
21
  value={value}
16
- onCheckedChange={disabled ? undefined : onValueChange}
22
+ onCheckedChange={isLabeled ? undefined : onValueChange}
17
23
  enabled={!disabled}
18
- modifiers={[...(modifiers ?? []), ...(testID ? [testIDModifier(testID)] : [])]}
24
+ modifiers={[
25
+ ...(modifiers ?? []),
26
+ ...(isLabeled
27
+ ? [defaultMinSize({ minWidth: MIN_INTERACTIVE_SIZE, minHeight: MIN_INTERACTIVE_SIZE })]
28
+ : []),
29
+ ...(testID ? [testIDModifier(testID)] : []),
30
+ ]}
19
31
  />
20
32
  );
21
33
 
22
- if (label == null) return toggle;
34
+ if (!isLabeled) return toggle;
23
35
 
24
36
  return (
25
37
  <Row
26
38
  verticalAlignment="center"
27
39
  horizontalArrangement={{ spacedBy: 8 }}
28
- modifiers={[fillMaxWidth(), width(IntrinsicSize.Max)]}>
40
+ modifiers={[
41
+ fillMaxWidth(),
42
+ width(IntrinsicSize.Max),
43
+ toggleable(value, () => !disabled && onValueChange(!value), {
44
+ role: 'switch',
45
+ enabled: !disabled,
46
+ }),
47
+ ]}>
29
48
  <Text modifiers={[weight(1)]}>{label}</Text>
30
49
  {toggle}
31
50
  </Row>
@@ -28,6 +28,7 @@ const styles = StyleSheet.create({
28
28
  },
29
29
  text: {
30
30
  color: colors.foreground,
31
+ flexGrow: 1,
31
32
  userSelect: 'none',
32
33
  },
33
34
  track: {
@@ -4,8 +4,8 @@ import { useUniversalLifecycle } from '../hooks';
4
4
  import type { TextProps } from './types';
5
5
 
6
6
  const styles = StyleSheet.create({
7
- light: { color: '#000000' },
8
- dark: { color: '#FFFFFF' },
7
+ light: { color: 'var(--expo-ui-foreground, #000000)' },
8
+ dark: { color: 'var(--expo-ui-foreground, #FFFFFF)' },
9
9
  hidden: { display: 'none' },
10
10
  disabled: { opacity: 0.5 },
11
11
  });
@@ -132,6 +132,10 @@ export const globalCss = css`
132
132
  }
133
133
  }
134
134
 
135
+ [data-theme='light'] {
136
+ ${lightVariables}
137
+ }
138
+
135
139
  [data-theme='dark'] {
136
140
  ${darkVariables}
137
141
  }
@@ -1 +0,0 @@
1
- 5d7c4fd251da7578f23af5102d539533aefb3e64
@@ -1 +0,0 @@
1
- f9a24faad34f9f66bebcdde7d05a6cf72a8b4b9030819b80049de5084a694ef0
@@ -1 +0,0 @@
1
- 10ed672c04082cf5f06e6ca6dca0f28229f11f3d503d46e5b61dbc7d3ad50bfdc1399838dd38dc5b8c1643ec375c4bf1672c95606ce28f7ed36384f66b829b68
@@ -1 +0,0 @@
1
- 0a7945dfaec70218a5a6ed678049dd831dde7c23
@@ -1 +0,0 @@
1
- 83f788f94510400d5695ee901721e3cef284309da751b00c9df7eeb8e4fdd5ca
@@ -1 +0,0 @@
1
- 61d884b5f7528ac4d2791cebbdc45eefa1bfaf4eca17faf37b322a58a5670b042b1096a860bba051adb4a9d95334f227a9ea8f69473289d7a7725ea2600d7c48
@@ -1 +0,0 @@
1
- aa7bf9c6ba26b5b17ed01fee30da4bebcccc3a30
@@ -1 +0,0 @@
1
- 40b983bbed71d40341901a69d3ccb11f05df376770fdf645d690adcdc2ecb2ad
@@ -1 +0,0 @@
1
- d99293cea982f3bb6bd43ced68122e957b7de2fe6462e340d3a712220a05102f2c399896100844629fbaf9e4676005d0f5975d27b35066d4b1714a40ba160e22
@@ -1 +0,0 @@
1
- 326c7b1245711c1546f6cff3d3b43a8d0055a7d5
@@ -1 +0,0 @@
1
- 6f11e59da1bd0114fa50e832c7adb7f64651956a13e2989218f3f24b5e210b63
@@ -1 +0,0 @@
1
- d469c3b770e3c8135b80e503922da3361b5eb101d722a3cb92fa2602585c37938a0bc8096a6e1735e4d7d8612dcc46b7eb486816780a49a62531c58f48c7d3be