275 lines
8.0 KiB
TypeScript
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,
|
|
},
|
|
});
|