267 lines
6.5 KiB
TypeScript
267 lines
6.5 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,
|
|
paddingBottom: spacing.xxxl,
|
|
},
|
|
header: {
|
|
flexDirection: 'row',
|
|
alignItems: 'center',
|
|
justifyContent: 'space-between',
|
|
marginTop: 20,
|
|
marginBottom: spacing.lg,
|
|
},
|
|
greetingText: {
|
|
fontSize: typography.fontSize.sm,
|
|
color: colors.textSecondary,
|
|
},
|
|
nameText: {
|
|
fontSize: typography.fontSize.xl,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.text,
|
|
marginTop: 2,
|
|
},
|
|
toggleWrapper: {
|
|
flexDirection: 'row',
|
|
alignItems: 'center',
|
|
backgroundColor: colors.inputBg,
|
|
paddingHorizontal: spacing.sm,
|
|
paddingVertical: 6,
|
|
borderRadius: borderRadius.full,
|
|
borderWidth: 1,
|
|
borderColor: colors.border,
|
|
},
|
|
statusDot: {
|
|
width: 8,
|
|
height: 8,
|
|
borderRadius: 4,
|
|
marginRight: 6,
|
|
},
|
|
statusText: {
|
|
fontSize: typography.fontSize.xs,
|
|
fontWeight: typography.fontWeight.bold,
|
|
},
|
|
offlineBanner: {
|
|
backgroundColor: colors.errorLight,
|
|
paddingVertical: spacing.md,
|
|
paddingHorizontal: spacing.lg,
|
|
borderRadius: borderRadius.md,
|
|
marginBottom: spacing.lg,
|
|
alignItems: 'center',
|
|
borderWidth: 1,
|
|
borderColor: colors.error,
|
|
},
|
|
offlineBannerText: {
|
|
fontSize: typography.fontSize.sm,
|
|
color: colors.error,
|
|
fontWeight: typography.fontWeight.medium,
|
|
},
|
|
summaryCard: {
|
|
backgroundColor: colors.cardBg,
|
|
borderRadius: borderRadius.lg,
|
|
padding: spacing.xl,
|
|
marginBottom: spacing.lg,
|
|
...shadow.md,
|
|
borderWidth: 1,
|
|
borderColor: colors.border,
|
|
},
|
|
summaryTitle: {
|
|
fontSize: typography.fontSize.sm,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.textSecondary,
|
|
textTransform: 'uppercase',
|
|
marginBottom: spacing.lg,
|
|
},
|
|
statsRow: {
|
|
flexDirection: 'row',
|
|
alignItems: 'center',
|
|
justifyContent: 'space-between',
|
|
},
|
|
statBox: {
|
|
flex: 1,
|
|
alignItems: 'center',
|
|
},
|
|
statVal: {
|
|
fontSize: typography.fontSize.xl,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.text,
|
|
marginBottom: 4,
|
|
},
|
|
statLabel: {
|
|
fontSize: typography.fontSize.xs,
|
|
color: colors.textSecondary,
|
|
},
|
|
statDivider: {
|
|
width: 1,
|
|
height: 32,
|
|
backgroundColor: colors.border,
|
|
},
|
|
promptCard: {
|
|
backgroundColor: colors.cardBg,
|
|
borderRadius: borderRadius.lg,
|
|
padding: spacing.xl,
|
|
alignItems: 'center',
|
|
marginBottom: spacing.lg,
|
|
...shadow.md,
|
|
borderWidth: 1,
|
|
borderColor: colors.border,
|
|
},
|
|
promptTitle: {
|
|
fontSize: typography.fontSize.lg,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.text,
|
|
textAlign: 'center',
|
|
marginBottom: spacing.sm,
|
|
},
|
|
promptDesc: {
|
|
fontSize: typography.fontSize.sm,
|
|
color: colors.textSecondary,
|
|
textAlign: 'center',
|
|
marginBottom: spacing.xl,
|
|
lineHeight: 20,
|
|
},
|
|
onlineBtn: {
|
|
width: '100%',
|
|
},
|
|
performanceCard: {
|
|
backgroundColor: colors.cardBg,
|
|
borderRadius: borderRadius.lg,
|
|
padding: spacing.xl,
|
|
marginBottom: spacing.lg,
|
|
...shadow.md,
|
|
borderWidth: 1,
|
|
borderColor: colors.border,
|
|
},
|
|
perfTitle: {
|
|
fontSize: typography.fontSize.sm,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.textSecondary,
|
|
textTransform: 'uppercase',
|
|
marginBottom: spacing.md,
|
|
},
|
|
perfRow: {
|
|
flexDirection: 'row',
|
|
justifyContent: 'space-between',
|
|
},
|
|
perfBox: {
|
|
alignItems: 'center',
|
|
flex: 1,
|
|
},
|
|
perfVal: {
|
|
fontSize: typography.fontSize.lg,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.text,
|
|
marginBottom: 2,
|
|
},
|
|
perfLabel: {
|
|
fontSize: 10,
|
|
color: colors.textSecondary,
|
|
},
|
|
chartCard: {
|
|
backgroundColor: colors.cardBg,
|
|
borderRadius: borderRadius.lg,
|
|
padding: spacing.xl,
|
|
marginBottom: spacing.lg,
|
|
...shadow.md,
|
|
borderWidth: 1,
|
|
borderColor: colors.border,
|
|
},
|
|
chartTitle: {
|
|
fontSize: typography.fontSize.sm,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.textSecondary,
|
|
textTransform: 'uppercase',
|
|
marginBottom: spacing.lg,
|
|
},
|
|
chartRow: {
|
|
flexDirection: 'row',
|
|
justifyContent: 'space-between',
|
|
alignItems: 'flex-end',
|
|
height: 120,
|
|
paddingBottom: 8,
|
|
},
|
|
barContainer: {
|
|
alignItems: 'center',
|
|
flex: 1,
|
|
},
|
|
bar: {
|
|
width: 14,
|
|
borderRadius: borderRadius.sm,
|
|
backgroundColor: colors.primary,
|
|
},
|
|
barLabel: {
|
|
fontSize: 10,
|
|
color: colors.textSecondary,
|
|
marginTop: 8,
|
|
},
|
|
barVal: {
|
|
fontSize: 8,
|
|
color: colors.text,
|
|
marginBottom: 4,
|
|
fontWeight: 'bold',
|
|
},
|
|
offlineBtn: {
|
|
width: '100%',
|
|
marginBottom: spacing.xl,
|
|
},
|
|
simulateBtn: {
|
|
marginVertical: spacing.sm,
|
|
backgroundColor: colors.primaryLight,
|
|
borderColor: colors.primary,
|
|
borderWidth: 1,
|
|
paddingVertical: 8,
|
|
borderRadius: borderRadius.sm,
|
|
alignItems: 'center',
|
|
},
|
|
simulateBtnText: {
|
|
color: colors.primary,
|
|
fontWeight: 'bold',
|
|
fontSize: typography.fontSize.sm,
|
|
},
|
|
helpSection: {
|
|
marginTop: spacing.sm,
|
|
},
|
|
helpTitle: {
|
|
fontSize: typography.fontSize.sm,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.textSecondary,
|
|
textTransform: 'uppercase',
|
|
marginBottom: spacing.md,
|
|
},
|
|
helpRow: {
|
|
flexDirection: 'row',
|
|
justifyContent: 'space-between',
|
|
gap: 10,
|
|
},
|
|
helpItem: {
|
|
flex: 1,
|
|
backgroundColor: colors.cardBg,
|
|
borderRadius: borderRadius.md,
|
|
padding: spacing.md,
|
|
alignItems: 'center',
|
|
borderWidth: 1,
|
|
borderColor: colors.border,
|
|
...shadow.sm,
|
|
},
|
|
helpLabel: {
|
|
fontSize: typography.fontSize.xs,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.text,
|
|
marginTop: spacing.sm,
|
|
textAlign: 'center',
|
|
},
|
|
helpSub: {
|
|
fontSize: 9,
|
|
color: colors.textSecondary,
|
|
marginTop: 2,
|
|
textAlign: 'center',
|
|
},
|
|
});
|