-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Expand file tree
/
Copy pathHeaderBase.styles.ts
More file actions
57 lines (50 loc) · 1.43 KB
/
HeaderBase.styles.ts
File metadata and controls
57 lines (50 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// Third party dependencies.
import { StyleSheet, ViewStyle } from 'react-native';
// External dependencies.
import { Theme } from '../../../util/theme/models';
// Internal dependencies.
import {
HeaderBaseStyleSheetVars,
HeaderBaseVariant,
} from './HeaderBase.types';
/**
* Style sheet function for HeaderBase component.
*
* @param params Style sheet params.
* @param params.theme App theme from ThemeContext.
* @param params.vars Inputs that the style sheet depends on.
* @returns StyleSheet object.
*/
const styleSheet = (params: {
theme: Theme;
vars: HeaderBaseStyleSheetVars;
}) => {
const { vars } = params;
const { style, startAccessorySize, endAccessorySize, variant } = vars;
const isLeftAligned = variant === HeaderBaseVariant.Display;
// Only calculate accessoryWidth for center alignment to ensure visual centering
let accessoryWidth;
if (!isLeftAligned && startAccessorySize && endAccessorySize) {
accessoryWidth = Math.max(startAccessorySize.width, endAccessorySize.width);
}
return StyleSheet.create({
base: Object.assign(
{
flexDirection: 'row',
gap: 16,
} as ViewStyle,
style,
) as ViewStyle,
titleWrapper: {
flex: 1,
alignItems: isLeftAligned ? 'flex-start' : 'center',
},
title: {
textAlign: isLeftAligned ? 'left' : 'center',
},
accessoryWrapper: {
width: accessoryWidth,
},
});
};
export default styleSheet;