275 lines
8.0 KiB
TypeScript

import { StyleSheet } from 'react-native';
import { typography, spacing, borderRadius, shadow } from '@theme';
export const getStyles = (colors: any) =>
StyleSheet.create({
container: {
flex: 1,
backgroundColor: colors.background,
},
scrollContainer: {
paddingHorizontal: spacing.lg,
paddingTop: spacing.md,
paddingBottom: spacing.xxl + 40,
},
// ── Empty State ────────────────────────────────────────────────────
emptyContainer: {
alignItems: 'center',
justifyContent: 'center',
paddingVertical: spacing.huge + 24,
},
emptyIconCircle: {
width: 80,
height: 80,
borderRadius: borderRadius.full,
backgroundColor: colors.primaryLight,
justifyContent: 'center',
alignItems: 'center',
marginBottom: spacing.lg,
},
emptyTitle: {
fontSize: typography.fontSize.lg,
fontWeight: typography.fontWeight.bold,
color: colors.text,
marginBottom: spacing.xs,
},
emptySubtitle: {
fontSize: typography.fontSize.sm,
color: colors.textSecondary,
textAlign: 'center',
lineHeight: 20,
paddingHorizontal: spacing.xl,
},
// ── Summary Banner ────────────────────────────────────────────────
summaryBanner: {
backgroundColor: colors.primaryLight,
borderRadius: borderRadius.lg,
padding: spacing.lg,
marginBottom: spacing.lg,
borderWidth: 1,
borderColor: colors.border,
flexDirection: 'row',
alignItems: 'center',
},
summaryIconCircle: {
width: 44,
height: 44,
borderRadius: borderRadius.full,
backgroundColor: colors.primary,
justifyContent: 'center',
alignItems: 'center',
marginRight: spacing.md,
},
summaryTextContainer: {
flex: 1,
},
summaryTitle: {
fontSize: typography.fontSize.md,
fontWeight: typography.fontWeight.bold,
color: colors.primaryDark || colors.primary,
marginBottom: 2,
},
summarySubtitle: {
fontSize: typography.fontSize.xs,
color: colors.textSecondary,
},
// ── Section Header ─────────────────────────────────────────────────
sectionHeader: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
marginBottom: spacing.md,
},
sectionTitle: {
fontSize: typography.fontSize.md,
fontWeight: typography.fontWeight.bold,
color: colors.text,
},
countBadge: {
backgroundColor: colors.primaryLight,
paddingHorizontal: spacing.sm,
paddingVertical: 3,
borderRadius: borderRadius.full,
},
countBadgeText: {
fontSize: typography.fontSize.xs - 1,
fontWeight: typography.fontWeight.bold,
color: colors.primary,
},
// ── Account Card ───────────────────────────────────────────────────
accountCard: {
backgroundColor: colors.cardBg,
borderRadius: borderRadius.lg,
marginBottom: spacing.md,
borderWidth: 1,
borderColor: colors.border,
overflow: 'hidden',
...shadow.sm,
},
defaultCard: {
borderColor: colors.primary,
borderWidth: 1.5,
},
cardTopStrip: {
height: 4,
backgroundColor: colors.primary,
width: '100%',
},
cardBody: {
padding: spacing.lg,
},
cardHeaderRow: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
marginBottom: spacing.md,
},
cardHeaderLeft: {
flexDirection: 'row',
alignItems: 'center',
flex: 1,
marginRight: spacing.sm,
},
bankIconCircle: {
width: 46,
height: 46,
borderRadius: borderRadius.md,
backgroundColor: colors.primaryLight,
justifyContent: 'center',
alignItems: 'center',
marginRight: spacing.md,
},
cardTitleGroup: {
flex: 1,
},
bankName: {
fontSize: typography.fontSize.md,
fontWeight: typography.fontWeight.bold,
color: colors.text,
marginBottom: 2,
},
holderName: {
fontSize: typography.fontSize.xs,
color: colors.textSecondary,
},
badgeRow: {
flexDirection: 'row',
alignItems: 'center',
gap: 6,
},
defaultBadge: {
backgroundColor: colors.primary,
paddingHorizontal: spacing.sm,
paddingVertical: 3,
borderRadius: borderRadius.full,
},
defaultBadgeText: {
fontSize: typography.fontSize.xs - 2,
fontWeight: typography.fontWeight.bold,
color: colors.white,
letterSpacing: 0.3,
},
verifiedBadge: {
backgroundColor: colors.successLight,
paddingHorizontal: spacing.sm,
paddingVertical: 3,
borderRadius: borderRadius.full,
},
unverifiedBadge: {
backgroundColor: colors.warningLight,
paddingHorizontal: spacing.sm,
paddingVertical: 3,
borderRadius: borderRadius.full,
},
verifiedBadgeText: {
fontSize: typography.fontSize.xs - 2,
fontWeight: typography.fontWeight.bold,
color: colors.success,
letterSpacing: 0.3,
},
unverifiedBadgeText: {
fontSize: typography.fontSize.xs - 2,
fontWeight: typography.fontWeight.bold,
color: colors.warning,
letterSpacing: 0.3,
},
divider: {
height: 1,
backgroundColor: colors.divider,
marginVertical: spacing.md,
},
// ── Card Fields ────────────────────────────────────────────────────
fieldsGrid: {
flexDirection: 'row',
flexWrap: 'wrap',
},
fieldItem: {
width: '50%',
marginBottom: spacing.md,
},
fieldItemFull: {
width: '100%',
marginBottom: spacing.md,
},
fieldLabel: {
fontSize: typography.fontSize.xs - 1,
color: colors.textSecondary,
marginBottom: 3,
textTransform: 'uppercase',
letterSpacing: 0.5,
},
fieldValue: {
fontSize: typography.fontSize.sm,
fontWeight: typography.fontWeight.semibold,
color: colors.text,
},
fieldValueMasked: {
fontSize: typography.fontSize.sm,
fontWeight: typography.fontWeight.semibold,
color: colors.text,
letterSpacing: 2,
},
// ── Card Footer ────────────────────────────────────────────────────
cardFooter: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
paddingTop: spacing.sm,
},
addedAtText: {
fontSize: typography.fontSize.xs,
color: colors.textSecondary,
},
// ── Add Button ─────────────────────────────────────────────────────
addButton: {
backgroundColor: colors.primary,
borderRadius: borderRadius.md,
paddingVertical: spacing.md + 2,
alignItems: 'center',
justifyContent: 'center',
flexDirection: 'row',
marginTop: spacing.sm,
...shadow.md,
},
addButtonText: {
fontSize: typography.fontSize.md,
fontWeight: typography.fontWeight.bold,
color: colors.white,
marginLeft: spacing.sm,
},
addButtonIcon: {
width: 22,
height: 22,
borderRadius: borderRadius.full,
backgroundColor: 'rgba(255,255,255,0.25)',
justifyContent: 'center',
alignItems: 'center',
},
addButtonIconText: {
color: colors.white,
fontSize: 18,
lineHeight: 20,
fontWeight: typography.fontWeight.bold,
},
});