222 lines
5.6 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,
},
infoBanner: {
backgroundColor: colors.primaryLight,
borderRadius: borderRadius.lg,
padding: spacing.lg,
marginBottom: spacing.lg,
borderWidth: 1,
borderColor: colors.border,
flexDirection: 'row',
alignItems: 'center',
},
infoIconContainer: {
width: 44,
height: 44,
borderRadius: borderRadius.full,
backgroundColor: colors.primary,
justifyContent: 'center',
alignItems: 'center',
marginRight: spacing.md,
},
infoTextContainer: {
flex: 1,
},
infoTitle: {
fontSize: typography.fontSize.md,
fontWeight: typography.fontWeight.bold,
color: colors.primaryDark || colors.primary,
marginBottom: 2,
},
infoSub: {
fontSize: typography.fontSize.xs,
color: colors.textSecondary,
lineHeight: 18,
},
formCard: {
backgroundColor: colors.cardBg,
borderRadius: borderRadius.lg,
padding: spacing.lg,
borderWidth: 1,
borderColor: colors.border,
...shadow.sm,
},
fieldContainer: {
marginBottom: spacing.lg,
},
labelRow: {
flexDirection: 'row',
alignItems: 'center',
marginBottom: spacing.xs + 2,
},
label: {
fontSize: typography.fontSize.sm,
fontWeight: typography.fontWeight.semibold,
color: colors.text,
},
requiredStar: {
color: colors.error,
marginLeft: 4,
fontSize: typography.fontSize.sm,
fontWeight: typography.fontWeight.bold,
},
input: {
backgroundColor: colors.inputBg,
borderWidth: 1,
borderColor: colors.border,
borderRadius: borderRadius.md,
paddingHorizontal: spacing.md,
paddingVertical: spacing.md - 2,
fontSize: typography.fontSize.md,
color: colors.text,
},
inputError: {
borderColor: colors.error,
},
errorText: {
fontSize: typography.fontSize.xs,
color: colors.error,
marginTop: 4,
},
toggleRow: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
backgroundColor: colors.inputBg,
padding: spacing.md,
borderRadius: borderRadius.md,
borderWidth: 1,
borderColor: colors.border,
marginBottom: spacing.lg,
},
toggleTextContainer: {
flex: 1,
marginRight: spacing.md,
},
toggleTitle: {
fontSize: typography.fontSize.sm,
fontWeight: typography.fontWeight.bold,
color: colors.text,
marginBottom: 2,
},
toggleSub: {
fontSize: typography.fontSize.xs,
color: colors.textSecondary,
},
uploadBox: {
backgroundColor: colors.inputBg,
borderWidth: 1.5,
borderStyle: 'dashed',
borderColor: colors.border,
borderRadius: borderRadius.md,
padding: spacing.lg,
alignItems: 'center',
justifyContent: 'center',
},
uploadBoxActive: {
borderColor: colors.primary,
borderStyle: 'solid',
backgroundColor: colors.primaryLight,
},
uploadIconCircle: {
width: 42,
height: 42,
borderRadius: borderRadius.full,
backgroundColor: colors.cardBg,
justifyContent: 'center',
alignItems: 'center',
marginBottom: spacing.xs,
},
uploadTitle: {
fontSize: typography.fontSize.sm,
fontWeight: typography.fontWeight.bold,
color: colors.primary,
marginBottom: 2,
},
uploadSub: {
fontSize: typography.fontSize.xs,
color: colors.textSecondary,
},
filePreviewRow: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
width: '100%',
},
fileInfo: {
flexDirection: 'row',
alignItems: 'center',
flex: 1,
marginRight: spacing.sm,
},
fileThumbnail: {
width: 40,
height: 40,
borderRadius: borderRadius.sm,
marginRight: spacing.sm,
},
fileName: {
fontSize: typography.fontSize.sm,
fontWeight: typography.fontWeight.semibold,
color: colors.text,
},
fileSize: {
fontSize: typography.fontSize.xs,
color: colors.textSecondary,
marginTop: 2,
},
removeBtn: {
paddingHorizontal: spacing.sm,
paddingVertical: spacing.xs,
borderRadius: borderRadius.sm,
backgroundColor: colors.errorLight,
},
removeBtnText: {
fontSize: typography.fontSize.xs,
color: colors.error,
fontWeight: typography.fontWeight.bold,
},
errorBanner: {
backgroundColor: colors.errorLight,
borderRadius: borderRadius.md,
padding: spacing.md,
marginBottom: spacing.lg,
borderWidth: 1,
borderColor: colors.error,
},
errorBannerText: {
fontSize: typography.fontSize.sm,
color: colors.error,
fontWeight: typography.fontWeight.medium,
},
submitBtn: {
backgroundColor: colors.primary,
borderRadius: borderRadius.md,
paddingVertical: spacing.md + 2,
alignItems: 'center',
justifyContent: 'center',
marginTop: spacing.sm,
...shadow.md,
},
submitBtnDisabled: {
opacity: 0.6,
},
submitBtnText: {
fontSize: typography.fontSize.md,
fontWeight: typography.fontWeight.bold,
color: colors.white,
},
});