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,
},
});