import { View, Text, StyleSheet, Platform, Pressable, ActivityIndicator } from "react-native"; import { Ionicons } from "@expo/vector-icons"; import Animated, { FadeInDown, FadeIn, useSharedValue, useAnimatedStyle, withSpring } from "react-native-reanimated"; import { GradientBackground } from "../../src/components/ui"; import { colors, spacing, radius, typography, animations } from "../../src/theme"; import { useFeatureInterest } from "../../src/hooks/useFeatureInterest"; const ACCENT_COLOR = colors.premium.gold; const AnimatedPressable = Animated.createAnimatedComponent(Pressable); export default function DaresScreen() { const { isInterested, isLoading, isToggling, toggleInterest, isAuthenticated } = useFeatureInterest("dares"); const scale = useSharedValue(1); const animatedButtonStyle = useAnimatedStyle(() => ({ transform: [{ scale: scale.value }], })); const handlePressIn = () => { scale.value = withSpring(0.96, animations.spring); }; const handlePressOut = () => { scale.value = withSpring(1, animations.spring); }; return ( {/* Icon */} {/* Title section */} ADVENTURE Dares {/* Decorative separator */} {/* Coming soon badge */} ARRIVING SOON {/* Description */} Push your boundaries together with tantalising challenges designed to ignite passion and create unforgettable moments. {/* Feature hints */} Provocative challenges Multiple intensity levels Designed for two {/* Bottom teaser */} Are you ready to play? {/* Interest button */} {isAuthenticated && !isLoading && ( {isToggling ? ( ) : ( <> {isInterested ? "You're on the list!" : "I'm interested"} )} )} ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', paddingHorizontal: spacing.lg, paddingTop: Platform.OS === 'ios' ? 60 : 40, paddingBottom: Platform.OS === 'ios' ? 120 : 100, }, content: { width: '100%', alignItems: 'center', paddingHorizontal: spacing.md, }, iconContainer: { width: 72, height: 72, borderRadius: 36, backgroundColor: 'rgba(212, 175, 55, 0.1)', borderWidth: 1, borderColor: 'rgba(212, 175, 55, 0.2)', justifyContent: 'center', alignItems: 'center', marginBottom: spacing.xl, }, label: { ...typography.caption1, fontWeight: '600', letterSpacing: 3, color: ACCENT_COLOR, textAlign: 'center', marginBottom: spacing.xs, }, title: { ...typography.largeTitle, color: colors.text, textAlign: 'center', }, separator: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', marginVertical: spacing.lg, width: 140, }, separatorLine: { flex: 1, height: 1, backgroundColor: 'rgba(212, 175, 55, 0.3)', }, separatorDiamond: { width: 6, height: 6, backgroundColor: ACCENT_COLOR, transform: [{ rotate: '45deg' }], marginHorizontal: spacing.md, opacity: 0.6, }, badge: { backgroundColor: 'rgba(212, 175, 55, 0.1)', paddingHorizontal: spacing.lg, paddingVertical: spacing.sm, borderRadius: radius.full, borderWidth: 1, borderColor: 'rgba(212, 175, 55, 0.2)', marginBottom: spacing.xl, }, badgeText: { ...typography.caption2, fontWeight: '600', letterSpacing: 2, color: ACCENT_COLOR, }, description: { ...typography.body, color: colors.textSecondary, textAlign: 'center', marginBottom: spacing.xl, paddingHorizontal: spacing.md, }, features: { marginBottom: spacing.xl, }, featureItem: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', marginBottom: spacing.sm, }, featureText: { ...typography.subhead, color: colors.text, marginLeft: spacing.sm, }, teaser: { ...typography.footnote, fontStyle: 'italic', color: colors.textTertiary, textAlign: 'center', }, interestButtonContainer: { marginTop: spacing.xl, }, interestButton: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', backgroundColor: 'rgba(212, 175, 55, 0.1)', paddingHorizontal: spacing.lg, paddingVertical: spacing.sm + 2, borderRadius: radius.full, borderWidth: 1, borderColor: 'rgba(212, 175, 55, 0.2)', gap: spacing.sm, }, interestButtonActive: { backgroundColor: 'rgba(212, 175, 55, 0.15)', borderColor: 'rgba(212, 175, 55, 0.3)', }, interestButtonText: { ...typography.subhead, fontWeight: '600', color: ACCENT_COLOR, }, });