import React from 'react'; import { View, Text, ScrollView, Pressable, StyleSheet } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { useRouter } from 'expo-router'; import { LinearGradient } from 'expo-linear-gradient'; import { ArrowLeft } from 'lucide-react-native'; import { Colors, Fonts, FontSize, BorderRadius, Shadows, Spacing } from '@/constants/theme'; import { marketplacePresets } from '@/constants/mockData'; import AnimatedCard from '@/components/AnimatedCard'; import PillBadge from '@/components/PillBadge'; import PressableScale from '@/components/PressableScale'; const RISK_COLORS: Record = { aggressive: { color: Colors.accent.orange, label: 'Aggressive' }, balanced: { color: Colors.accent.green, label: 'Balanced' }, safe: { color: Colors.accent.blue, label: 'Conservative' }, }; export default function MarketplaceScreen() { const insets = useSafeAreaInsets(); const router = useRouter(); return ( router.back()} style={styles.backBtn}> MARKETPLACE Strategy Marketplace {marketplacePresets.map((preset, index) => { const risk = RISK_COLORS[preset.risk]; return ( {preset.isPopular && ( Popular )} {preset.name} {preset.description} {preset.trades} {preset.assets.map(a => ( {a} ))} {preset.tag} USE STRATEGY ); })} ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: Colors.background.primary, }, headerSection: { padding: Spacing.screenPadding, flexDirection: 'row', alignItems: 'center', gap: 14, }, backBtn: { width: 40, height: 40, borderRadius: 12, backgroundColor: Colors.background.card, alignItems: 'center', justifyContent: 'center', borderWidth: 1, borderColor: Colors.border.default, }, sectionLabel: { fontFamily: Fonts.inter.black, fontSize: FontSize.micro, color: Colors.accent.green, letterSpacing: 4, marginBottom: 4, }, pageTitle: { fontFamily: Fonts.inter.black, fontSize: FontSize.heading, color: Colors.text.primary, }, scroll: { flex: 1, }, content: { padding: Spacing.screenPadding, gap: 20, paddingBottom: 60, }, cardOuter: { borderRadius: 28, }, card: { backgroundColor: Colors.background.card, borderRadius: 28, padding: 32, borderWidth: 1, borderColor: Colors.border.default, gap: 14, }, popularBadge: { alignSelf: 'flex-start', backgroundColor: 'rgba(0,255,136,0.05)', borderWidth: 1, borderColor: 'rgba(0,255,136,0.1)', paddingHorizontal: 12, paddingVertical: 4, borderRadius: 8, }, popularText: { fontFamily: Fonts.inter.bold, fontSize: FontSize.badge, color: Colors.accent.green, }, presetName: { fontFamily: Fonts.inter.black, fontSize: 18, color: Colors.text.primary, }, presetDesc: { fontFamily: Fonts.inter.medium, fontSize: FontSize.body, color: Colors.text.secondary, lineHeight: 20, }, metaRow: { flexDirection: 'row', alignItems: 'center', gap: 12, }, tradesPerDay: { fontFamily: Fonts.mono.medium, fontSize: FontSize.bodySmall, color: Colors.text.secondary, }, assetPills: { flexDirection: 'row', gap: 6, flexWrap: 'wrap', }, assetPill: { backgroundColor: 'rgba(255,255,255,0.05)', paddingHorizontal: 10, paddingVertical: 4, borderRadius: BorderRadius.xs, }, assetText: { fontFamily: Fonts.mono.medium, fontSize: FontSize.micro, color: Colors.text.secondary, }, tagRow: { marginTop: 2, }, tagText: { fontFamily: Fonts.mono.bold, fontSize: FontSize.body, color: Colors.accent.green, }, ctaWrapper: { marginTop: 6, borderRadius: 18, shadowColor: 'rgba(0,255,136,0.4)', shadowOffset: { width: 0, height: 12 }, shadowOpacity: 1, shadowRadius: 36, elevation: 8, }, ctaButton: { height: 56, borderRadius: 18, alignItems: 'center', justifyContent: 'center', }, ctaText: { fontFamily: Fonts.inter.black, fontSize: FontSize.bodySmall, color: '#000', letterSpacing: 2, }, });