225 lines
5.1 KiB
TypeScript
225 lines
5.1 KiB
TypeScript
import { StyleSheet, Platform } from 'react-native';
|
|
import { typography } from '@theme';
|
|
|
|
export const getStyles = (colors: any) =>
|
|
StyleSheet.create({
|
|
container: {
|
|
flex: 1,
|
|
backgroundColor: colors.background,
|
|
},
|
|
content: {
|
|
paddingBottom: 40,
|
|
},
|
|
|
|
// ---------- Profile card ----------
|
|
profileCard: {
|
|
alignItems: 'center',
|
|
backgroundColor: colors.cardBg,
|
|
marginHorizontal: 16,
|
|
marginTop: 16,
|
|
borderRadius: 20,
|
|
paddingVertical: 28,
|
|
paddingHorizontal: 20,
|
|
...Platform.select({
|
|
ios: {
|
|
shadowColor: '#000',
|
|
shadowOffset: { width: 0, height: 3 },
|
|
shadowOpacity: 0.06,
|
|
shadowRadius: 10,
|
|
},
|
|
android: { elevation: 2 },
|
|
}),
|
|
},
|
|
avatarWrap: {
|
|
position: 'relative',
|
|
marginBottom: 14,
|
|
},
|
|
avatar: {
|
|
width: 84,
|
|
height: 84,
|
|
borderRadius: 42,
|
|
backgroundColor: colors.primary,
|
|
justifyContent: 'center',
|
|
alignItems: 'center',
|
|
borderWidth: 3,
|
|
borderColor: colors.primaryMuted ?? '#E9F7EF',
|
|
},
|
|
avatarText: {
|
|
fontSize: 32,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: '#FFFFFF',
|
|
},
|
|
editAvatarBadge: {
|
|
position: 'absolute',
|
|
bottom: -2,
|
|
right: -2,
|
|
width: 28,
|
|
height: 28,
|
|
borderRadius: 14,
|
|
backgroundColor: colors.background,
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
borderWidth: 2,
|
|
borderColor: colors.cardBg,
|
|
},
|
|
editAvatarIcon: {
|
|
fontSize: 12,
|
|
},
|
|
profileName: {
|
|
fontSize: typography.fontSize.xl,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.text,
|
|
marginBottom: 4,
|
|
},
|
|
profilePhoneRow: {
|
|
flexDirection: 'row',
|
|
alignItems: 'center',
|
|
marginBottom: 16,
|
|
},
|
|
profilePhoneIcon: {
|
|
fontSize: 13,
|
|
marginRight: 5,
|
|
},
|
|
profilePhone: {
|
|
fontSize: typography.fontSize.md,
|
|
color: colors.textSecondary,
|
|
},
|
|
editProfileButton: {
|
|
borderWidth: 1.5,
|
|
borderColor: colors.primary,
|
|
borderRadius: 20,
|
|
paddingHorizontal: 20,
|
|
paddingVertical: 8,
|
|
},
|
|
editProfileButtonText: {
|
|
fontSize: typography.fontSize.sm,
|
|
fontWeight: typography.fontWeight.semibold,
|
|
color: colors.primary,
|
|
},
|
|
|
|
// ---------- Stats row ----------
|
|
statsRow: {
|
|
flexDirection: 'row',
|
|
marginHorizontal: 16,
|
|
marginTop: 14,
|
|
backgroundColor: colors.cardBg,
|
|
borderRadius: 16,
|
|
paddingVertical: 16,
|
|
...Platform.select({
|
|
ios: {
|
|
shadowColor: '#000',
|
|
shadowOffset: { width: 0, height: 2 },
|
|
shadowOpacity: 0.05,
|
|
shadowRadius: 8,
|
|
},
|
|
android: { elevation: 1 },
|
|
}),
|
|
},
|
|
statItem: {
|
|
flex: 1,
|
|
alignItems: 'center',
|
|
},
|
|
statDivider: {
|
|
width: 1,
|
|
backgroundColor: colors.border,
|
|
},
|
|
statValue: {
|
|
fontSize: typography.fontSize.lg,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.text,
|
|
},
|
|
statLabel: {
|
|
fontSize: typography.fontSize.xs,
|
|
color: colors.textSecondary,
|
|
marginTop: 2,
|
|
},
|
|
|
|
// ---------- Menu sections ----------
|
|
menuSection: {
|
|
marginTop: 24,
|
|
paddingHorizontal: 16,
|
|
},
|
|
sectionLabel: {
|
|
fontSize: typography.fontSize.xs,
|
|
fontWeight: typography.fontWeight.semibold,
|
|
color: colors.textSecondary,
|
|
letterSpacing: 0.8,
|
|
textTransform: 'uppercase',
|
|
marginBottom: 10,
|
|
marginLeft: 4,
|
|
},
|
|
sectionCard: {
|
|
backgroundColor: colors.cardBg,
|
|
borderRadius: 16,
|
|
overflow: 'hidden',
|
|
...Platform.select({
|
|
ios: {
|
|
shadowColor: '#000',
|
|
shadowOffset: { width: 0, height: 2 },
|
|
shadowOpacity: 0.04,
|
|
shadowRadius: 8,
|
|
},
|
|
android: { elevation: 1 },
|
|
}),
|
|
},
|
|
menuItem: {
|
|
flexDirection: 'row',
|
|
alignItems: 'center',
|
|
paddingVertical: 14,
|
|
paddingHorizontal: 14,
|
|
},
|
|
menuItemDivider: {
|
|
borderBottomWidth: 1,
|
|
borderBottomColor: colors.border,
|
|
},
|
|
menuIconBadge: {
|
|
width: 38,
|
|
height: 38,
|
|
borderRadius: 12,
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
marginRight: 14,
|
|
},
|
|
menuIcon: {
|
|
fontSize: 17,
|
|
},
|
|
menuTextWrap: {
|
|
flex: 1,
|
|
},
|
|
menuLabel: {
|
|
fontSize: typography.fontSize.md,
|
|
fontWeight: typography.fontWeight.medium,
|
|
color: colors.text,
|
|
},
|
|
menuSubLabel: {
|
|
fontSize: typography.fontSize.xs,
|
|
color: colors.textSecondary,
|
|
marginTop: 1,
|
|
},
|
|
menuArrowBadge: {
|
|
width: 24,
|
|
height: 24,
|
|
borderRadius: 12,
|
|
backgroundColor: colors.background,
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
},
|
|
menuArrow: {
|
|
fontSize: 13,
|
|
color: colors.textSecondary,
|
|
},
|
|
|
|
// ---------- Logout ----------
|
|
logoutSection: {
|
|
paddingHorizontal: 16,
|
|
marginTop: 28,
|
|
},
|
|
versionText: {
|
|
textAlign: 'center',
|
|
fontSize: typography.fontSize.xs,
|
|
color: colors.textSecondary,
|
|
marginTop: 18,
|
|
opacity: 0.7,
|
|
},
|
|
});
|