import { useMemo, useState } from 'react'; import { ScrollView, StyleSheet, View, TouchableOpacity, Text } from 'react-native'; import { CategoryTabs, CommunityGrid, FeatureCarousel, Header, PageLayout, SectionHeader, StatusBarSpacer, type CommunityItem, type FeatureItem, } from '@/components/bestai'; import { useAuth } from '@/hooks/use-auth'; import { useAuthGuard } from '@/hooks/use-auth-guard'; const categories = [ { id: 'visual-effects', label: 'Visual Effects' }, { id: 'higgsfield-soul', label: 'Higgsfield Soul' }, { id: 'higgsfield-apps', label: 'Higgsfield Apps' }, { id: 'king', label: 'King' }, ]; const baseFeatureItems: FeatureItem[] = [ { id: 'sketch-video', title: 'UNLIMITED SKETCH TO VIDEO', subtitle: 'Bring your imagination to life with Sora 2', image: 'https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?auto=format&fit=crop&w=800&q=80', }, { id: 'portrait-video', title: 'UNLIMITED PORTRAIT TO VIDEO', subtitle: 'Transform portraits into motion-driven stories', image: 'https://images.unsplash.com/photo-1524504388940-b1c1722653e1?auto=format&fit=crop&w=800&q=80', }, { id: 'water-simulation', title: 'FLUID SIMULATION PACK', subtitle: 'Realistic water physics for cinematic scenes', image: 'https://images.unsplash.com/photo-1505744386214-51dba16a26fc?auto=format&fit=crop&w=800&q=80', }, ]; const baseCommunityItems: CommunityItem[] = [ { id: 'community-1', chip: '64/10', title: 'OBJECTS AROUND', image: 'https://images.unsplash.com/photo-1524504388940-b1c1722653e1?auto=format&fit=crop&w=800&q=80', actionLabel: 'Generate', }, { id: 'community-2', chip: '64/10', title: 'OBJECTS AROUND', image: 'https://images.unsplash.com/photo-1544723795-3fb6469f5b39?auto=format&fit=crop&w=800&q=80', actionLabel: 'Generate', }, { id: 'community-3', chip: '64/10', title: 'OBJECTS AROUND', image: 'https://images.unsplash.com/photo-1524504388940-b1c1722653e1?auto=format&fit=crop&w=800&q=80', actionLabel: 'Generate', }, { id: 'community-4', chip: '64/10', title: 'OBJECTS AROUND', image: 'https://images.unsplash.com/photo-1531259683007-016a7b628fc4?auto=format&fit=crop&w=800&q=80', actionLabel: 'Generate', }, ]; export default function ExploreScreen() { const { isAuthenticated } = useAuth(); const { requireAuth } = useAuthGuard(); const [activeCategory, setActiveCategory] = useState(categories[0]?.id ?? 'visual-effects'); const featureItems = useMemo(() => { return baseFeatureItems.map((item, index) => ({ ...item, id: `${activeCategory}-${index}`, })); }, [activeCategory]); const communityItems = useMemo(() => { return baseCommunityItems.map((item, index) => ({ ...item, id: `${activeCategory}-${index}`, })); }, [activeCategory]); const handleGeneratePress = () => { requireAuth(() => { console.log('用户已登录,执行生成操作'); }); }; if (!isAuthenticated) { return (
🔒 需要登录 登录后即可浏览和使用所有功能 requireAuth()} activeOpacity={0.8} > 立即登录 ); } return (
); } const styles = StyleSheet.create({ scroll: { flex: 1, }, contentContainer: { paddingTop: 16, paddingBottom: 48, }, bottomSpacer: { height: 32, }, loginPrompt: { alignItems: 'center', paddingVertical: 60, paddingHorizontal: 32, }, lockIconContainer: { width: 80, height: 80, borderRadius: 40, backgroundColor: 'rgba(255, 255, 255, 0.1)', alignItems: 'center', justifyContent: 'center', marginBottom: 24, }, lockIcon: { fontSize: 40, }, loginTitle: { fontSize: 24, fontWeight: '700', color: '#ffffff', marginBottom: 12, }, loginSubtitle: { fontSize: 16, color: 'rgba(255, 255, 255, 0.6)', textAlign: 'center', lineHeight: 24, marginBottom: 32, }, loginButton: { backgroundColor: '#d7ff1f', paddingHorizontal: 32, paddingVertical: 16, borderRadius: 12, }, loginButtonText: { color: '#050505', fontSize: 16, fontWeight: '700', }, });