@react-navigation/elements 3.0.0-alpha.0 → 3.0.0-alpha.10
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.
- package/lib/module/Badge.js +1 -1
- package/lib/module/Badge.js.map +1 -1
- package/lib/module/Button.js +1 -1
- package/lib/module/Button.js.map +1 -1
- package/lib/module/Color.js +95 -0
- package/lib/module/Color.js.map +1 -1
- package/lib/module/Header/Header.js +19 -2
- package/lib/module/Header/Header.js.map +1 -1
- package/lib/module/Header/HeaderBackButton.js +27 -13
- package/lib/module/Header/HeaderBackButton.js.map +1 -1
- package/lib/module/Header/HeaderButtonBackground.js +7 -0
- package/lib/module/Header/HeaderButtonBackground.js.map +1 -1
- package/lib/module/Header/HeaderIcon.js +29 -10
- package/lib/module/Header/HeaderIcon.js.map +1 -1
- package/lib/module/Header/HeaderSearchBar.js +28 -21
- package/lib/module/Header/HeaderSearchBar.js.map +1 -1
- package/lib/module/PlatformColor.js +1 -0
- package/lib/module/PlatformColor.js.map +1 -1
- package/lib/module/PlatformColor.native.js +1 -1
- package/lib/module/PlatformColor.native.js.map +1 -1
- package/lib/module/index.js +1 -7
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/Color.d.ts +4 -3
- package/lib/typescript/src/Color.d.ts.map +1 -1
- package/lib/typescript/src/Header/Header.d.ts.map +1 -1
- package/lib/typescript/src/Header/HeaderBackButton.d.ts +1 -1
- package/lib/typescript/src/Header/HeaderBackButton.d.ts.map +1 -1
- package/lib/typescript/src/Header/HeaderButtonBackground.d.ts +4 -2
- package/lib/typescript/src/Header/HeaderButtonBackground.d.ts.map +1 -1
- package/lib/typescript/src/Header/HeaderIcon.d.ts +8 -4
- package/lib/typescript/src/Header/HeaderIcon.d.ts.map +1 -1
- package/lib/typescript/src/Header/HeaderSearchBar.d.ts.map +1 -1
- package/lib/typescript/src/PlatformColor.d.ts +1 -0
- package/lib/typescript/src/PlatformColor.d.ts.map +1 -1
- package/lib/typescript/src/PlatformColor.native.d.ts +1 -1
- package/lib/typescript/src/PlatformColor.native.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +53 -14
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/Badge.tsx +1 -1
- package/src/Button.tsx +1 -3
- package/src/Color.tsx +133 -3
- package/src/Header/Header.tsx +21 -1
- package/src/Header/HeaderBackButton.tsx +28 -14
- package/src/Header/HeaderButtonBackground.tsx +8 -2
- package/src/Header/HeaderIcon.tsx +49 -9
- package/src/Header/HeaderSearchBar.tsx +27 -18
- package/src/PlatformColor.native.tsx +1 -1
- package/src/PlatformColor.tsx +4 -0
- package/src/index.tsx +1 -16
- package/src/types.tsx +62 -13
- package/lib/module/assets/back-icon.ios.svg +0 -4
- package/lib/module/assets/back-icon@1x.android.png +0 -0
- package/lib/module/assets/back-icon@1x.ios.png +0 -0
- package/lib/module/assets/back-icon@2x.android.png +0 -0
- package/lib/module/assets/back-icon@2x.ios.png +0 -0
- package/lib/module/assets/back-icon@3x.android.png +0 -0
- package/lib/module/assets/back-icon@3x.ios.png +0 -0
- package/lib/module/assets/back-icon@4x.android.png +0 -0
- package/lib/module/assets/back-icon@4x.ios.png +0 -0
- package/lib/module/assets/clear-icon@1x.png +0 -0
- package/lib/module/assets/clear-icon@2x.png +0 -0
- package/lib/module/assets/clear-icon@3x.png +0 -0
- package/lib/module/assets/clear-icon@4x.png +0 -0
- package/lib/module/assets/close-icon@1x.png +0 -0
- package/lib/module/assets/close-icon@2x.png +0 -0
- package/lib/module/assets/close-icon@3x.png +0 -0
- package/lib/module/assets/close-icon@4x.png +0 -0
- package/lib/module/assets/search-icon-legacy@1x.ios.png +0 -0
- package/lib/module/assets/search-icon-legacy@2x.ios.png +0 -0
- package/lib/module/assets/search-icon-legacy@3x.ios.png +0 -0
- package/lib/module/assets/search-icon-legacy@4x.ios.png +0 -0
- package/lib/module/assets/search-icon.ios.svg +0 -4
- package/lib/module/assets/search-icon@1x.android.png +0 -0
- package/lib/module/assets/search-icon@1x.ios.png +0 -0
- package/lib/module/assets/search-icon@2x.android.png +0 -0
- package/lib/module/assets/search-icon@2x.ios.png +0 -0
- package/lib/module/assets/search-icon@3x.android.png +0 -0
- package/lib/module/assets/search-icon@3x.ios.png +0 -0
- package/lib/module/assets/search-icon@4x.android.png +0 -0
- package/lib/module/assets/search-icon@4x.ios.png +0 -0
- package/src/assets/back-icon.ios.svg +0 -4
- package/src/assets/back-icon@1x.android.png +0 -0
- package/src/assets/back-icon@1x.ios.png +0 -0
- package/src/assets/back-icon@2x.android.png +0 -0
- package/src/assets/back-icon@2x.ios.png +0 -0
- package/src/assets/back-icon@3x.android.png +0 -0
- package/src/assets/back-icon@3x.ios.png +0 -0
- package/src/assets/back-icon@4x.android.png +0 -0
- package/src/assets/back-icon@4x.ios.png +0 -0
- package/src/assets/clear-icon@1x.png +0 -0
- package/src/assets/clear-icon@2x.png +0 -0
- package/src/assets/clear-icon@3x.png +0 -0
- package/src/assets/clear-icon@4x.png +0 -0
- package/src/assets/close-icon@1x.png +0 -0
- package/src/assets/close-icon@2x.png +0 -0
- package/src/assets/close-icon@3x.png +0 -0
- package/src/assets/close-icon@4x.png +0 -0
- package/src/assets/search-icon-legacy@1x.ios.png +0 -0
- package/src/assets/search-icon-legacy@2x.ios.png +0 -0
- package/src/assets/search-icon-legacy@3x.ios.png +0 -0
- package/src/assets/search-icon-legacy@4x.ios.png +0 -0
- package/src/assets/search-icon.ios.svg +0 -4
- package/src/assets/search-icon@1x.android.png +0 -0
- package/src/assets/search-icon@1x.ios.png +0 -0
- package/src/assets/search-icon@2x.android.png +0 -0
- package/src/assets/search-icon@2x.ios.png +0 -0
- package/src/assets/search-icon@3x.android.png +0 -0
- package/src/assets/search-icon@3x.ios.png +0 -0
- package/src/assets/search-icon@4x.android.png +0 -0
- package/src/assets/search-icon@4x.ios.png +0 -0
package/src/Header/Header.tsx
CHANGED
|
@@ -90,12 +90,14 @@ export function Header(props: Props) {
|
|
|
90
90
|
headerTitle: customTitle,
|
|
91
91
|
headerTitleAlign = Platform.OS === 'ios' ? 'center' : 'left',
|
|
92
92
|
headerLeft = back ? (props) => <HeaderBackButton {...props} /> : undefined,
|
|
93
|
+
headerLeftBackgroundVisible,
|
|
93
94
|
headerSearchBarOptions,
|
|
94
95
|
headerTransparent,
|
|
95
96
|
headerTintColor,
|
|
96
97
|
headerBackground,
|
|
97
98
|
headerBlurEffect,
|
|
98
99
|
headerRight,
|
|
100
|
+
headerRightBackgroundVisible,
|
|
99
101
|
headerTitleAllowFontScaling: titleAllowFontScaling,
|
|
100
102
|
headerTitleStyle: titleStyle,
|
|
101
103
|
headerLeftContainerStyle: leftContainerStyle,
|
|
@@ -411,6 +413,7 @@ export function Header(props: Props) {
|
|
|
411
413
|
]}
|
|
412
414
|
>
|
|
413
415
|
<HeaderButtonBackground
|
|
416
|
+
plain={headerLeftBackgroundVisible === false}
|
|
414
417
|
style={[styles.buttonContainer, leftContainerStyle]}
|
|
415
418
|
>
|
|
416
419
|
{leftButton}
|
|
@@ -441,6 +444,7 @@ export function Header(props: Props) {
|
|
|
441
444
|
]}
|
|
442
445
|
>
|
|
443
446
|
<HeaderButtonBackground
|
|
447
|
+
plain={headerRightBackgroundVisible === false}
|
|
444
448
|
style={[styles.buttonContainer, rightContainerStyle]}
|
|
445
449
|
>
|
|
446
450
|
{rightButton}
|
|
@@ -454,7 +458,23 @@ export function Header(props: Props) {
|
|
|
454
458
|
headerSearchBarOptions?.onOpen?.();
|
|
455
459
|
}}
|
|
456
460
|
>
|
|
457
|
-
<HeaderIcon
|
|
461
|
+
<HeaderIcon
|
|
462
|
+
icon={Platform.select({
|
|
463
|
+
android: {
|
|
464
|
+
type: 'materialSymbol',
|
|
465
|
+
name: 'search',
|
|
466
|
+
},
|
|
467
|
+
ios: {
|
|
468
|
+
type: 'sfSymbol',
|
|
469
|
+
name: 'magnifyingglass',
|
|
470
|
+
},
|
|
471
|
+
default: {
|
|
472
|
+
type: 'image',
|
|
473
|
+
source: searchIcon,
|
|
474
|
+
},
|
|
475
|
+
})}
|
|
476
|
+
color={iconTintColor}
|
|
477
|
+
/>
|
|
458
478
|
</HeaderButton>
|
|
459
479
|
) : null}
|
|
460
480
|
</HeaderButtonBackground>
|
|
@@ -12,11 +12,12 @@ import {
|
|
|
12
12
|
View,
|
|
13
13
|
} from 'react-native';
|
|
14
14
|
|
|
15
|
-
import
|
|
15
|
+
import backIconImage from '../assets/back-icon.png';
|
|
16
16
|
import { isLiquidGlassSupported } from '../LiquidGlassView';
|
|
17
17
|
import type {
|
|
18
18
|
HeaderBackButtonDisplayMode,
|
|
19
19
|
HeaderBackButtonProps,
|
|
20
|
+
HeaderIcon as HeaderIconType,
|
|
20
21
|
} from '../types';
|
|
21
22
|
import { BUTTON_SIZE, HeaderButton } from './HeaderButton';
|
|
22
23
|
import { HeaderIcon } from './HeaderIcon';
|
|
@@ -24,7 +25,7 @@ import { HeaderIcon } from './HeaderIcon';
|
|
|
24
25
|
export function HeaderBackButton({
|
|
25
26
|
disabled,
|
|
26
27
|
allowFontScaling,
|
|
27
|
-
|
|
28
|
+
icon,
|
|
28
29
|
label,
|
|
29
30
|
labelStyle,
|
|
30
31
|
displayMode = 'minimal',
|
|
@@ -48,17 +49,30 @@ export function HeaderBackButton({
|
|
|
48
49
|
const isMinimal = displayMode === 'minimal' || measuredMinimal;
|
|
49
50
|
|
|
50
51
|
const renderBackImage = () => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return (
|
|
55
|
-
<HeaderIcon
|
|
56
|
-
source={backIcon}
|
|
57
|
-
tintColor={tintColor ?? colors.text}
|
|
58
|
-
style={styles.icon}
|
|
59
|
-
/>
|
|
60
|
-
);
|
|
52
|
+
const color = tintColor ?? colors.text;
|
|
53
|
+
|
|
54
|
+
if (typeof icon === 'function') {
|
|
55
|
+
return icon({ tintColor: color });
|
|
61
56
|
}
|
|
57
|
+
|
|
58
|
+
const backIcon =
|
|
59
|
+
icon ??
|
|
60
|
+
Platform.select<HeaderIconType>({
|
|
61
|
+
ios: {
|
|
62
|
+
type: 'sfSymbol',
|
|
63
|
+
name: 'chevron.left',
|
|
64
|
+
},
|
|
65
|
+
android: {
|
|
66
|
+
type: 'materialSymbol',
|
|
67
|
+
name: 'arrow_back',
|
|
68
|
+
},
|
|
69
|
+
default: {
|
|
70
|
+
type: 'image',
|
|
71
|
+
source: backIconImage,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
return <HeaderIcon icon={backIcon} color={color} style={styles.icon} />;
|
|
62
76
|
};
|
|
63
77
|
|
|
64
78
|
const handlePress = () => {
|
|
@@ -231,8 +245,8 @@ function HeaderBackLabel({
|
|
|
231
245
|
// iOS uses a smaller chevron, Android uses a larger arrow
|
|
232
246
|
const ICON_WIDTH = Platform.OS === 'ios' ? 13 : 24;
|
|
233
247
|
const ICON_SPACING_START = isLiquidGlassSupported
|
|
234
|
-
?
|
|
235
|
-
:
|
|
248
|
+
? 15 // Standard distance of chevron from left edge in liquid glass
|
|
249
|
+
: 2; // Otherwise icon is aligned to the start of the button
|
|
236
250
|
|
|
237
251
|
// Standard distance between chevron and label
|
|
238
252
|
const ICON_LABEL_SPACING = 9;
|
|
@@ -3,12 +3,18 @@ import { Animated, StyleSheet } from 'react-native';
|
|
|
3
3
|
import { LiquidGlassView } from '../LiquidGlassView';
|
|
4
4
|
import { BUTTON_SIZE } from './HeaderButton';
|
|
5
5
|
|
|
6
|
-
type Props = React.ComponentProps<typeof Animated.View
|
|
6
|
+
type Props = React.ComponentProps<typeof Animated.View> & {
|
|
7
|
+
plain?: boolean;
|
|
8
|
+
};
|
|
7
9
|
|
|
8
10
|
const AnimatedLiquidGlassView =
|
|
9
11
|
Animated.createAnimatedComponent(LiquidGlassView);
|
|
10
12
|
|
|
11
|
-
export function HeaderButtonBackground({ style, ...rest }: Props) {
|
|
13
|
+
export function HeaderButtonBackground({ plain, style, ...rest }: Props) {
|
|
14
|
+
if (plain) {
|
|
15
|
+
return <Animated.View style={[styles.container, style]} {...rest} />;
|
|
16
|
+
}
|
|
17
|
+
|
|
12
18
|
return (
|
|
13
19
|
<AnimatedLiquidGlassView
|
|
14
20
|
interactive
|
|
@@ -1,24 +1,64 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { MaterialSymbol, SFSymbol, useLocale } from '@react-navigation/native';
|
|
2
|
+
import {
|
|
3
|
+
type ColorValue,
|
|
4
|
+
Image,
|
|
5
|
+
type ImageProps,
|
|
6
|
+
Platform,
|
|
7
|
+
StyleSheet,
|
|
8
|
+
} from 'react-native';
|
|
3
9
|
|
|
4
|
-
|
|
5
|
-
|
|
10
|
+
import type { HeaderIcon as HeaderIconType } from '../types';
|
|
11
|
+
|
|
12
|
+
type Props = Omit<ImageProps, 'source'> & {
|
|
13
|
+
icon: HeaderIconType;
|
|
14
|
+
color: ColorValue;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export function HeaderIcon({ icon, color, style, ...rest }: Props) {
|
|
6
18
|
const { direction } = useLocale();
|
|
7
19
|
|
|
20
|
+
const iconStyle = [styles.icon, direction === 'rtl' && styles.flip, style];
|
|
21
|
+
|
|
22
|
+
if (icon.type === 'sfSymbol') {
|
|
23
|
+
return (
|
|
24
|
+
<SFSymbol
|
|
25
|
+
name={icon.name}
|
|
26
|
+
color={color}
|
|
27
|
+
size={ICON_SIZE}
|
|
28
|
+
style={iconStyle}
|
|
29
|
+
{...rest}
|
|
30
|
+
/>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (icon.type === 'materialSymbol') {
|
|
35
|
+
return (
|
|
36
|
+
<MaterialSymbol
|
|
37
|
+
name={icon.name}
|
|
38
|
+
variant={icon.variant}
|
|
39
|
+
weight={icon.weight}
|
|
40
|
+
color={color}
|
|
41
|
+
size={ICON_SIZE}
|
|
42
|
+
style={iconStyle}
|
|
43
|
+
{...rest}
|
|
44
|
+
/>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
8
48
|
return (
|
|
9
49
|
<Image
|
|
10
|
-
source={source}
|
|
50
|
+
source={icon.source}
|
|
11
51
|
resizeMode="contain"
|
|
12
52
|
fadeDuration={0}
|
|
13
|
-
tintColor={
|
|
14
|
-
style={
|
|
53
|
+
tintColor={color}
|
|
54
|
+
style={iconStyle}
|
|
15
55
|
{...rest}
|
|
16
56
|
/>
|
|
17
57
|
);
|
|
18
58
|
}
|
|
19
59
|
|
|
20
|
-
|
|
21
|
-
|
|
60
|
+
const ICON_SIZE = Platform.OS === 'ios' ? 21 : 24;
|
|
61
|
+
const ICON_MARGIN = Platform.OS === 'ios' ? 8 : 3;
|
|
22
62
|
|
|
23
63
|
const styles = StyleSheet.create({
|
|
24
64
|
icon: {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { useNavigation, useTheme } from '@react-navigation/native';
|
|
1
|
+
import { SFSymbol, useNavigation, useTheme } from '@react-navigation/native';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import {
|
|
4
4
|
Animated,
|
|
5
5
|
BackHandler,
|
|
6
6
|
type ColorValue,
|
|
7
|
-
Image,
|
|
8
7
|
type NativeEventSubscription,
|
|
9
8
|
Platform,
|
|
10
9
|
type StyleProp,
|
|
@@ -14,10 +13,7 @@ import {
|
|
|
14
13
|
type ViewStyle,
|
|
15
14
|
} from 'react-native';
|
|
16
15
|
|
|
17
|
-
import clearIcon from '../assets/clear-icon.png';
|
|
18
16
|
import closeIcon from '../assets/close-icon.png';
|
|
19
|
-
import searchIcon from '../assets/search-icon.png';
|
|
20
|
-
import searchIconLegacy from '../assets/search-icon-legacy.png';
|
|
21
17
|
import { Color } from '../Color';
|
|
22
18
|
import {
|
|
23
19
|
AnimatedLiquidGlassContainerView,
|
|
@@ -210,9 +206,10 @@ function HeaderSearchBarInternal(
|
|
|
210
206
|
) : null}
|
|
211
207
|
<HeaderButtonBackground style={styles.searchbarContainer}>
|
|
212
208
|
{Platform.OS === 'ios' ? (
|
|
213
|
-
<
|
|
214
|
-
|
|
215
|
-
|
|
209
|
+
<SFSymbol
|
|
210
|
+
name="magnifyingglass"
|
|
211
|
+
size={SEARCH_ICON_SIZE}
|
|
212
|
+
color={textColor}
|
|
216
213
|
style={[
|
|
217
214
|
styles.inputSearchIconIos,
|
|
218
215
|
!isLiquidGlassSupported && styles.inputSearchIconIosLegacy,
|
|
@@ -263,10 +260,10 @@ function HeaderSearchBarInternal(
|
|
|
263
260
|
!isLiquidGlassSupported && styles.clearButtonIosLegacy,
|
|
264
261
|
]}
|
|
265
262
|
>
|
|
266
|
-
<
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
263
|
+
<SFSymbol
|
|
264
|
+
name="xmark.circle.fill"
|
|
265
|
+
size={CLEAR_ICON_SIZE}
|
|
266
|
+
color={textColor}
|
|
270
267
|
style={styles.clearIconIos}
|
|
271
268
|
/>
|
|
272
269
|
</PlatformPressable>
|
|
@@ -278,7 +275,19 @@ function HeaderSearchBarInternal(
|
|
|
278
275
|
onPress={onClear}
|
|
279
276
|
style={[styles.closeButton, { opacity: clearVisibleAnim }]}
|
|
280
277
|
>
|
|
281
|
-
<HeaderIcon
|
|
278
|
+
<HeaderIcon
|
|
279
|
+
icon={Platform.select({
|
|
280
|
+
android: {
|
|
281
|
+
type: 'materialSymbol',
|
|
282
|
+
name: 'close',
|
|
283
|
+
},
|
|
284
|
+
default: {
|
|
285
|
+
type: 'image',
|
|
286
|
+
source: closeIcon,
|
|
287
|
+
},
|
|
288
|
+
})}
|
|
289
|
+
color={textColor}
|
|
290
|
+
/>
|
|
282
291
|
</HeaderButton>
|
|
283
292
|
) : null}
|
|
284
293
|
{Platform.OS === 'ios' ? (
|
|
@@ -288,7 +297,7 @@ function HeaderSearchBarInternal(
|
|
|
288
297
|
accessibilityLabel={cancelButtonText}
|
|
289
298
|
onPress={cancelSearch}
|
|
290
299
|
>
|
|
291
|
-
<
|
|
300
|
+
<SFSymbol name="xmark" color={textColor} />
|
|
292
301
|
</HeaderButton>
|
|
293
302
|
</HeaderButtonBackground>
|
|
294
303
|
) : (
|
|
@@ -332,14 +341,14 @@ const styles = StyleSheet.create({
|
|
|
332
341
|
},
|
|
333
342
|
inputSearchIconIos: {
|
|
334
343
|
position: 'absolute',
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
344
|
+
top: '50%',
|
|
345
|
+
left: BUTTON_SPACING + SEARCHBAR_ICON_SPACING / 2,
|
|
346
|
+
marginTop: -SEARCH_ICON_SIZE / 2,
|
|
338
347
|
height: SEARCH_ICON_SIZE,
|
|
339
348
|
width: SEARCH_ICON_SIZE,
|
|
340
349
|
},
|
|
341
350
|
inputSearchIconIosLegacy: {
|
|
342
|
-
top:
|
|
351
|
+
top: SEARCHBAR_ICON_SPACING,
|
|
343
352
|
},
|
|
344
353
|
backButton: {
|
|
345
354
|
alignSelf: 'center',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { PlatformColor } from 'react-native';
|
|
1
|
+
export { DynamicColorIOS, PlatformColor } from 'react-native';
|
package/src/PlatformColor.tsx
CHANGED
package/src/index.tsx
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import backIcon from './assets/back-icon.png';
|
|
2
|
-
import clearIcon from './assets/clear-icon.png';
|
|
3
|
-
import closeIcon from './assets/close-icon.png';
|
|
4
|
-
import searchIcon from './assets/search-icon.png';
|
|
5
|
-
import searchIconLegacy from './assets/search-icon-legacy.png';
|
|
6
|
-
|
|
7
1
|
export { Badge } from './Badge';
|
|
8
2
|
export { Button } from './Button';
|
|
9
3
|
export { getDefaultSidebarWidth } from './getDefaultSidebarWidth';
|
|
@@ -22,14 +16,5 @@ export { getLabel } from './Label/getLabel';
|
|
|
22
16
|
export { Label } from './Label/Label';
|
|
23
17
|
export { PlatformPressable } from './PlatformPressable';
|
|
24
18
|
export { Text } from './Text';
|
|
25
|
-
export { useFrameSize } from './useFrameSize';
|
|
26
|
-
|
|
27
|
-
export const Assets = [
|
|
28
|
-
backIcon,
|
|
29
|
-
searchIcon,
|
|
30
|
-
searchIconLegacy,
|
|
31
|
-
closeIcon,
|
|
32
|
-
clearIcon,
|
|
33
|
-
];
|
|
34
|
-
|
|
35
19
|
export * from './types';
|
|
20
|
+
export { useFrameSize } from './useFrameSize';
|
package/src/types.tsx
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
MaterialSymbolProps,
|
|
3
|
+
SFSymbolProps,
|
|
4
|
+
} from '@react-navigation/native';
|
|
5
|
+
import * as React from 'react';
|
|
1
6
|
import type {
|
|
2
7
|
Animated,
|
|
3
8
|
ColorValue,
|
|
9
|
+
ImageSourcePropType,
|
|
4
10
|
LayoutChangeEvent,
|
|
5
11
|
StyleProp,
|
|
6
12
|
TextInputProps,
|
|
@@ -123,17 +129,6 @@ export type HeaderOptions = {
|
|
|
123
129
|
* Options to render a search bar.
|
|
124
130
|
*/
|
|
125
131
|
headerSearchBarOptions?: HeaderSearchBarOptions;
|
|
126
|
-
/**
|
|
127
|
-
* Function which returns a React Element to display on the left side of the header.
|
|
128
|
-
*/
|
|
129
|
-
headerLeft?: (
|
|
130
|
-
props: HeaderBackButtonProps & {
|
|
131
|
-
/**
|
|
132
|
-
* Whether it's possible to navigate back.
|
|
133
|
-
*/
|
|
134
|
-
canGoBack?: boolean;
|
|
135
|
-
}
|
|
136
|
-
) => React.ReactNode;
|
|
137
132
|
/**
|
|
138
133
|
* How the back button displays icon and title.
|
|
139
134
|
*
|
|
@@ -154,6 +149,26 @@ export type HeaderOptions = {
|
|
|
154
149
|
fontFamily?: string;
|
|
155
150
|
fontSize?: number;
|
|
156
151
|
}>;
|
|
152
|
+
/**
|
|
153
|
+
* Function which returns a React Element to display on the left side of the header.
|
|
154
|
+
*/
|
|
155
|
+
headerLeft?: (
|
|
156
|
+
props: HeaderBackButtonProps & {
|
|
157
|
+
/**
|
|
158
|
+
* Whether it's possible to navigate back.
|
|
159
|
+
*/
|
|
160
|
+
canGoBack?: boolean;
|
|
161
|
+
}
|
|
162
|
+
) => React.ReactNode;
|
|
163
|
+
/**
|
|
164
|
+
* Whether the liquid glass background is visible for the item.
|
|
165
|
+
*
|
|
166
|
+
* Only supported on iOS 26.0 and later.
|
|
167
|
+
* Older versions of iOS and other platforms never show the background.
|
|
168
|
+
*
|
|
169
|
+
* Defaults to `true`.
|
|
170
|
+
*/
|
|
171
|
+
headerLeftBackgroundVisible?: boolean;
|
|
157
172
|
/**
|
|
158
173
|
* Style object for the container of the `headerLeft` element`.
|
|
159
174
|
*/
|
|
@@ -167,6 +182,15 @@ export type HeaderOptions = {
|
|
|
167
182
|
pressOpacity?: number;
|
|
168
183
|
canGoBack: boolean;
|
|
169
184
|
}) => React.ReactNode;
|
|
185
|
+
/**
|
|
186
|
+
* Whether the liquid glass background is visible for the item.
|
|
187
|
+
*
|
|
188
|
+
* Only supported on iOS 26.0 and later.
|
|
189
|
+
* Older versions of iOS and other platforms never show the background.
|
|
190
|
+
*
|
|
191
|
+
* Defaults to `true`.
|
|
192
|
+
*/
|
|
193
|
+
headerRightBackgroundVisible?: boolean;
|
|
170
194
|
/**
|
|
171
195
|
* Style object for the container of the `headerRight` element.
|
|
172
196
|
*/
|
|
@@ -307,11 +331,36 @@ export type HeaderButtonProps = {
|
|
|
307
331
|
children: React.ReactNode;
|
|
308
332
|
};
|
|
309
333
|
|
|
334
|
+
export type HeaderIcon =
|
|
335
|
+
| {
|
|
336
|
+
type: 'image';
|
|
337
|
+
source: ImageSourcePropType;
|
|
338
|
+
}
|
|
339
|
+
| {
|
|
340
|
+
type: 'sfSymbol';
|
|
341
|
+
name: SFSymbolProps['name'];
|
|
342
|
+
}
|
|
343
|
+
| ({
|
|
344
|
+
type: 'materialSymbol';
|
|
345
|
+
} & Pick<MaterialSymbolProps, 'name' | 'variant' | 'weight'>);
|
|
346
|
+
|
|
310
347
|
export type HeaderBackButtonProps = Omit<HeaderButtonProps, 'children'> & {
|
|
311
348
|
/**
|
|
312
|
-
*
|
|
349
|
+
* Icon to display for the back button.
|
|
350
|
+
*
|
|
351
|
+
* Supported types:
|
|
352
|
+
* - image: custom image source
|
|
353
|
+
* - sfSymbol: SF Symbol icon (iOS only)
|
|
354
|
+
* - materialSymbol: material symbol icon (Android only)
|
|
355
|
+
* - React Node: function that returns a React Element
|
|
356
|
+
*
|
|
357
|
+
* Defaults to back icon image for the platform
|
|
358
|
+
* - A chevron on iOS
|
|
359
|
+
* - An arrow on Android
|
|
313
360
|
*/
|
|
314
|
-
|
|
361
|
+
icon?:
|
|
362
|
+
| HeaderIcon
|
|
363
|
+
| ((props: { tintColor: ColorValue | undefined }) => React.ReactNode);
|
|
315
364
|
/**
|
|
316
365
|
* Label text for the button. Usually the title of the previous screen.
|
|
317
366
|
* By default, this is only shown on iOS.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|