255 lines
6.5 KiB
TypeScript

import { StyleSheet, Dimensions } from 'react-native';
import { typography, spacing, borderRadius, shadow } from '@theme';
const { width, height } = Dimensions.get('window');
export const getStyles = (colors: any) =>
StyleSheet.create({
container: {
flex: 1,
backgroundColor: colors.background,
},
scrollContainer: {
paddingHorizontal: spacing.lg,
paddingTop: spacing.md,
paddingBottom: spacing.xxl,
},
summaryCard: {
backgroundColor: colors.primaryLight,
borderRadius: borderRadius.lg,
padding: spacing.lg,
marginBottom: spacing.lg,
borderWidth: 1,
borderColor: colors.border,
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
},
summaryLeft: {
flex: 1,
},
summaryTitle: {
fontSize: typography.fontSize.lg,
fontWeight: typography.fontWeight.bold,
color: colors.primaryDark || colors.primary,
marginBottom: spacing.xs,
},
summarySub: {
fontSize: typography.fontSize.sm,
color: colors.textSecondary,
},
summaryBadge: {
backgroundColor: colors.primary,
paddingHorizontal: spacing.md,
paddingVertical: spacing.xs,
borderRadius: borderRadius.full,
},
summaryBadgeText: {
fontSize: typography.fontSize.xs,
fontWeight: typography.fontWeight.bold,
color: colors.white,
},
sectionTitle: {
fontSize: typography.fontSize.md,
fontWeight: typography.fontWeight.bold,
color: colors.text,
marginBottom: spacing.md,
},
docCard: {
backgroundColor: colors.cardBg,
borderRadius: borderRadius.lg,
padding: spacing.lg,
marginBottom: spacing.md,
borderWidth: 1,
borderColor: colors.border,
...shadow.sm,
},
cardHeader: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
marginBottom: spacing.md,
},
cardHeaderLeft: {
flexDirection: 'row',
alignItems: 'center',
flex: 1,
marginRight: spacing.sm,
},
iconContainer: {
width: 44,
height: 44,
borderRadius: borderRadius.md,
backgroundColor: colors.primaryLight,
justifyContent: 'center',
alignItems: 'center',
marginRight: spacing.md,
},
docTypeContainer: {
flex: 1,
},
docTitle: {
fontSize: typography.fontSize.md,
fontWeight: typography.fontWeight.bold,
color: colors.text,
marginBottom: 2,
},
docNumber: {
fontSize: typography.fontSize.xs,
color: colors.textSecondary,
fontWeight: typography.fontWeight.medium,
},
statusBadge: {
paddingHorizontal: spacing.sm,
paddingVertical: 4,
borderRadius: borderRadius.sm,
alignSelf: 'flex-start',
},
statusText: {
fontSize: typography.fontSize.xs - 2,
fontWeight: typography.fontWeight.bold,
letterSpacing: 0.5,
},
divider: {
height: 1,
backgroundColor: colors.divider,
marginVertical: spacing.md,
},
detailsRow: {
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
marginBottom: spacing.md,
},
detailItem: {
flex: 1,
},
detailLabel: {
fontSize: typography.fontSize.xs - 1,
color: colors.textSecondary,
marginBottom: 2,
},
detailValue: {
fontSize: typography.fontSize.xs,
color: colors.text,
fontWeight: typography.fontWeight.semibold,
},
viewButton: {
backgroundColor: colors.inputBg,
borderWidth: 1,
borderColor: colors.border,
borderRadius: borderRadius.md,
paddingVertical: spacing.sm,
paddingHorizontal: spacing.md,
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
},
viewButtonText: {
fontSize: typography.fontSize.sm,
fontWeight: typography.fontWeight.semibold,
color: colors.primary,
marginRight: spacing.xs,
},
filePill: {
flexDirection: 'row',
alignItems: 'center',
backgroundColor: colors.inputBg,
paddingHorizontal: spacing.md,
paddingVertical: spacing.xs + 2,
borderRadius: borderRadius.sm,
maxWidth: '70%',
},
fileNameText: {
fontSize: typography.fontSize.xs,
color: colors.textSecondary,
marginLeft: spacing.xs,
},
// Full Screen Modal Styles
modalContainer: {
flex: 1,
backgroundColor: colors.background,
},
modalHeader: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
paddingHorizontal: spacing.lg,
paddingTop: spacing.xl,
paddingBottom: spacing.md,
backgroundColor: colors.cardBg,
borderBottomWidth: 1,
borderBottomColor: colors.border,
...shadow.sm,
},
modalHeaderInfo: {
flex: 1,
marginRight: spacing.md,
},
modalTitle: {
fontSize: typography.fontSize.lg,
fontWeight: typography.fontWeight.bold,
color: colors.text,
},
modalSubtitle: {
fontSize: typography.fontSize.xs,
color: colors.textSecondary,
marginTop: 2,
},
closeButton: {
width: 38,
height: 38,
borderRadius: borderRadius.full,
backgroundColor: colors.inputBg,
justifyContent: 'center',
alignItems: 'center',
},
viewerContainer: {
flex: 1,
backgroundColor: '#121212',
justifyContent: 'center',
alignItems: 'center',
},
pdfViewer: {
flex: 1,
width: width,
height: height,
backgroundColor: '#121212',
},
imageViewer: {
width: '100%',
height: '100%',
},
loadingContainer: {
position: 'absolute',
zIndex: 10,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'rgba(0,0,0,0.4)',
padding: spacing.xl,
borderRadius: borderRadius.lg,
},
loadingText: {
color: colors.white,
marginTop: spacing.md,
fontSize: typography.fontSize.sm,
fontWeight: typography.fontWeight.medium,
},
emptyContainer: {
alignItems: 'center',
justifyContent: 'center',
paddingVertical: spacing.huge,
},
emptyTitle: {
fontSize: typography.fontSize.lg,
fontWeight: typography.fontWeight.bold,
color: colors.text,
marginTop: spacing.md,
},
emptySub: {
fontSize: typography.fontSize.sm,
color: colors.textSecondary,
marginTop: spacing.xs,
},
});