198 lines
4.4 KiB
TypeScript

import { StyleSheet } from 'react-native';
import { ThemeColors } from '../../theme';
export const getStyles = (colors: ThemeColors) =>
StyleSheet.create({
container: {
flex: 1,
backgroundColor: colors.background,
},
content: {
padding: 16,
paddingBottom: 36,
},
headerCard: {
backgroundColor: colors.card,
borderRadius: 18,
padding: 20,
alignItems: 'center',
marginBottom: 16,
shadowColor: '#0F172A',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.06,
shadowRadius: 6,
elevation: 3,
},
avatarWrapper: {
position: 'relative',
marginBottom: 12,
},
avatarImage: {
width: 84,
height: 84,
borderRadius: 42,
borderWidth: 3,
borderColor: colors.icon,
},
avatarCircle: {
width: 84,
height: 84,
borderRadius: 42,
backgroundColor: colors.icon,
justifyContent: 'center',
alignItems: 'center',
shadowColor: colors.icon,
shadowOffset: { width: 0, height: 4 },
shadowOpacity: 0.3,
shadowRadius: 6,
elevation: 4,
},
avatarInitial: {
color: '#FFFFFF',
fontSize: 34,
fontWeight: '800',
},
onlineDot: {
position: 'absolute',
bottom: 2,
right: 4,
width: 16,
height: 16,
borderRadius: 8,
backgroundColor: '#10B981',
borderWidth: 2.5,
borderColor: colors.card,
},
profileName: {
fontSize: 20,
fontWeight: '700',
color: colors.text,
textAlign: 'center',
marginBottom: 4,
},
profileEmail: {
fontSize: 13,
color: colors.textSecondary,
textAlign: 'center',
marginBottom: 10,
},
roleBadge: {
paddingHorizontal: 12,
paddingVertical: 5,
borderRadius: 20,
backgroundColor: `${colors.icon}15`,
},
roleBadgeText: {
fontSize: 12,
fontWeight: '700',
color: colors.icon,
letterSpacing: 0.3,
},
// Stats Summary Row
statsRow: {
flexDirection: 'row',
gap: 12,
marginBottom: 16,
},
statBox: {
flex: 1,
backgroundColor: colors.card,
borderRadius: 14,
padding: 14,
alignItems: 'center',
shadowColor: '#0F172A',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.04,
shadowRadius: 4,
elevation: 2,
},
statValue: {
fontSize: 18,
fontWeight: '700',
color: colors.text,
marginBottom: 2,
},
statLabel: {
fontSize: 11,
fontWeight: '600',
color: colors.textSecondary,
textTransform: 'uppercase',
letterSpacing: 0.3,
},
// Section Cards
sectionCard: {
backgroundColor: colors.card,
borderRadius: 16,
paddingHorizontal: 16,
paddingTop: 16,
paddingBottom: 6,
marginBottom: 16,
shadowColor: '#0F172A',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.05,
shadowRadius: 4,
elevation: 2,
},
sectionHeader: {
fontSize: 13,
fontWeight: '700',
color: colors.textSecondary,
textTransform: 'uppercase',
letterSpacing: 0.6,
marginBottom: 8,
},
preferenceRow: {
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
paddingVertical: 12,
borderBottomWidth: 1,
borderBottomColor: colors.border,
},
noBorder: {
borderBottomWidth: 0,
},
preferenceLabelGroup: {
flexDirection: 'row',
alignItems: 'center',
},
iconWrapper: {
width: 32,
height: 32,
borderRadius: 8,
backgroundColor: colors.surface,
alignItems: 'center',
justifyContent: 'center',
marginRight: 12,
},
preferenceText: {
fontSize: 14,
color: colors.text,
fontWeight: '500',
},
// Sign Out Button
signOutButton: {
backgroundColor: '#EF4444',
flexDirection: 'row',
justifyContent: 'center',
alignItems: 'center',
borderRadius: 12,
height: 50,
marginTop: 8,
shadowColor: '#EF4444',
shadowOffset: { width: 0, height: 4 },
shadowOpacity: 0.25,
shadowRadius: 6,
elevation: 3,
},
buttonIcon: {
marginRight: 8,
},
signOutButtonText: {
color: '#FFFFFF',
fontSize: 15,
fontWeight: '700',
letterSpacing: 0.3,
},
});