130 lines
3.8 KiB
TypeScript
130 lines
3.8 KiB
TypeScript
import { StyleSheet } from 'react-native';
|
|
import { typography, spacing, borderRadius, shadow } from '@theme';
|
|
|
|
const TIMER_SIZE = 56;
|
|
|
|
export const getStyles = (colors: any) =>
|
|
StyleSheet.create({
|
|
container: {
|
|
flex: 1,
|
|
backgroundColor: 'rgba(0, 0, 0, 0.65)',
|
|
justifyContent: 'flex-end',
|
|
},
|
|
modalContent: {
|
|
backgroundColor: colors.cardBg,
|
|
borderTopLeftRadius: borderRadius.xl,
|
|
borderTopRightRadius: borderRadius.xl,
|
|
padding: spacing.xl,
|
|
paddingBottom: spacing.huge,
|
|
...shadow.lg,
|
|
},
|
|
headerRow: {
|
|
flexDirection: 'row',
|
|
alignItems: 'center',
|
|
justifyContent: 'space-between',
|
|
marginBottom: spacing.lg,
|
|
},
|
|
modalTitle: {
|
|
fontSize: typography.fontSize.lg,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.text,
|
|
},
|
|
|
|
// ── Circular Timer (border-based) ─────────────────────────────────────
|
|
timerWrapper: {
|
|
width: TIMER_SIZE,
|
|
height: TIMER_SIZE,
|
|
borderRadius: TIMER_SIZE / 2,
|
|
borderWidth: 3,
|
|
justifyContent: 'center',
|
|
alignItems: 'center',
|
|
backgroundColor: colors.primaryLight,
|
|
},
|
|
timerText: {
|
|
fontSize: typography.fontSize.md,
|
|
fontWeight: typography.fontWeight.bold,
|
|
},
|
|
|
|
// ── Earnings Badge ────────────────────────────────────────────────────
|
|
earningsBadge: {
|
|
borderRadius: borderRadius.md,
|
|
paddingVertical: spacing.md,
|
|
paddingHorizontal: spacing.lg,
|
|
marginBottom: spacing.lg,
|
|
alignItems: 'center',
|
|
overflow: 'hidden',
|
|
},
|
|
earningsBadgeLabel: {
|
|
fontSize: 10,
|
|
fontWeight: 'bold' as const,
|
|
textTransform: 'uppercase' as const,
|
|
color: 'rgba(255,255,255,0.75)',
|
|
marginBottom: 2,
|
|
},
|
|
earningsBadgeValue: {
|
|
fontSize: 28,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: '#fff',
|
|
},
|
|
|
|
// ── Route Card ────────────────────────────────────────────────────────
|
|
routeContainer: {
|
|
backgroundColor: colors.inputBg,
|
|
borderRadius: borderRadius.md,
|
|
padding: spacing.md,
|
|
marginBottom: spacing.lg,
|
|
borderWidth: 1,
|
|
borderColor: colors.border,
|
|
},
|
|
spacer: {
|
|
height: spacing.md,
|
|
},
|
|
|
|
// ── Details Row ───────────────────────────────────────────────────────
|
|
detailsRow: {
|
|
flexDirection: 'row',
|
|
justifyContent: 'space-between',
|
|
marginBottom: spacing.xl,
|
|
backgroundColor: colors.inputBg,
|
|
padding: spacing.md,
|
|
borderRadius: borderRadius.md,
|
|
borderWidth: 1,
|
|
borderColor: colors.border,
|
|
},
|
|
detailBox: {
|
|
flex: 1,
|
|
alignItems: 'center',
|
|
},
|
|
detailLabel: {
|
|
fontSize: 10,
|
|
color: colors.textSecondary,
|
|
fontWeight: 'bold',
|
|
textTransform: 'uppercase',
|
|
marginBottom: 4,
|
|
},
|
|
detailValue: {
|
|
fontSize: typography.fontSize.lg,
|
|
fontWeight: typography.fontWeight.bold,
|
|
color: colors.text,
|
|
},
|
|
divider: {
|
|
width: 1,
|
|
height: 28,
|
|
backgroundColor: colors.border,
|
|
},
|
|
|
|
// ── Buttons ───────────────────────────────────────────────────────────
|
|
btnRow: {
|
|
flexDirection: 'row',
|
|
gap: 12,
|
|
},
|
|
rejectBtn: {
|
|
flex: 1,
|
|
backgroundColor: colors.border,
|
|
},
|
|
acceptBtn: {
|
|
flex: 2,
|
|
backgroundColor: colors.primary,
|
|
},
|
|
});
|