native_convex_CRM/app/features/customerDetails/customerDetails.styles.ts

201 lines
4.1 KiB
TypeScript

import { StyleSheet } from 'react-native';
import { ThemeColors } from '../../theme';
export const getStyles = (colors: ThemeColors) =>
StyleSheet.create({
container: {
flex: 1,
backgroundColor: colors.background,
},
scrollContent: {
padding: 16,
paddingBottom: 40,
},
// Header card
headerCard: {
backgroundColor: colors.card,
borderRadius: 16,
padding: 20,
alignItems: 'center',
marginBottom: 16,
shadowColor: '#0F172A',
shadowOffset: { width: 0, height: 3 },
shadowOpacity: 0.08,
shadowRadius: 8,
elevation: 3,
},
avatarCircle: {
width: 64,
height: 64,
borderRadius: 32,
backgroundColor: colors.icon,
justifyContent: 'center',
alignItems: 'center',
marginBottom: 12,
},
avatarInitial: {
color: '#FFFFFF',
fontSize: 26,
fontWeight: '700',
},
companyName: {
fontSize: 20,
fontWeight: '800',
color: colors.text,
textAlign: 'center',
},
fullName: {
fontSize: 14,
color: colors.textSecondary,
marginTop: 4,
textAlign: 'center',
},
badgeRow: {
flexDirection: 'row',
alignItems: 'center',
marginTop: 10,
gap: 8,
},
badge: {
paddingHorizontal: 10,
paddingVertical: 4,
borderRadius: 20,
},
activeBadge: {
backgroundColor: '#D1FAE5',
},
inactiveBadge: {
backgroundColor: '#FEE2E2',
},
badgeText: {
fontSize: 12,
fontWeight: '700',
},
activeBadgeText: {
color: '#059669',
},
inactiveBadgeText: {
color: '#DC2626',
},
dateText: {
fontSize: 12,
color: colors.textMuted,
},
// Quick Actions
actionRow: {
flexDirection: 'row',
gap: 10,
marginBottom: 16,
},
actionBtn: {
flex: 1,
flexDirection: 'row',
height: 42,
borderRadius: 10,
justifyContent: 'center',
alignItems: 'center',
gap: 6,
borderWidth: 1,
},
primaryBtn: {
backgroundColor: colors.icon,
borderColor: colors.icon,
},
primaryBtnText: {
color: '#FFFFFF',
fontWeight: '600',
fontSize: 13,
},
secondaryBtn: {
backgroundColor: colors.card,
borderColor: colors.border,
},
secondaryBtnText: {
color: colors.text,
fontWeight: '600',
fontSize: 13,
},
// Section title
sectionTitle: {
fontSize: 15,
fontWeight: '700',
color: colors.text,
marginTop: 8,
marginBottom: 10,
textTransform: 'uppercase',
letterSpacing: 0.5,
},
// Card & Info rows
infoCard: {
backgroundColor: colors.card,
borderRadius: 14,
padding: 16,
marginBottom: 16,
borderWidth: 1,
borderColor: colors.border,
shadowColor: '#0F172A',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.04,
shadowRadius: 4,
elevation: 2,
},
infoRow: {
flexDirection: 'row',
alignItems: 'center',
paddingVertical: 8,
},
infoIconWrap: {
width: 34,
height: 34,
borderRadius: 8,
backgroundColor: colors.surface,
justifyContent: 'center',
alignItems: 'center',
marginRight: 12,
},
infoMeta: {
flex: 1,
},
infoLabel: {
fontSize: 12,
color: colors.textMuted,
fontWeight: '500',
},
infoValue: {
fontSize: 14,
color: colors.text,
fontWeight: '600',
marginTop: 2,
},
divider: {
height: 1,
backgroundColor: colors.border,
marginVertical: 4,
},
actionIconButton: {
width: 32,
height: 32,
borderRadius: 16,
backgroundColor: `${colors.icon}10`,
justifyContent: 'center',
alignItems: 'center',
},
// Error & empty states
centered: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
padding: 32,
},
errorText: {
color: '#EF4444',
fontSize: 14,
textAlign: 'center',
marginTop: 10,
},
});