import { Colors } from '@/constants/Colors'; import { useColorScheme } from '@/hooks/useColorScheme'; import React, { useRef } from 'react'; import { Dimensions, ScrollView, StyleSheet, Text, View } from 'react-native'; import { GoalCard, GoalItem } from './GoalCard'; interface GoalCarouselProps { goals: GoalItem[]; onGoalPress?: (item: GoalItem) => void; } const { width: screenWidth } = Dimensions.get('window'); export function GoalCarousel({ goals, onGoalPress }: GoalCarouselProps) { const theme = useColorScheme() ?? 'light'; const colorTokens = Colors[theme]; const scrollViewRef = useRef(null); if (!goals || goals.length === 0) { return ( 今天暂无目标 ); } return ( {goals.map((item, index) => ( ))} {/* 占位符,确保最后一张卡片有足够的滑动空间 */} {/* 底部指示器 */} {/* {goals.map((_, index) => ( ))} */} ); } const styles = StyleSheet.create({ container: { }, scrollView: { }, scrollContent: { paddingHorizontal: 20, alignItems: 'center', }, emptyContainer: { height: 140, justifyContent: 'center', alignItems: 'center', marginHorizontal: 20, borderRadius: 20, borderWidth: 1, borderColor: '#E5E7EB', borderStyle: 'dashed', }, emptyText: { fontSize: 14, fontWeight: '500', }, indicatorContainer: { flexDirection: 'row', justifyContent: 'center', alignItems: 'center', gap: 6, }, indicator: { width: 6, height: 6, borderRadius: 3, }, });