import React from 'react'; import { useNavigate } from 'react-router-dom'; import { Card } from '@tamagui/card'; import { YGroup } from '@tamagui/group'; import { ListItem } from '@tamagui/list-item'; import { YStack, XStack } from '@tamagui/stacks'; import { SizableText as Text } from '@tamagui/text'; import { Pressable } from '@tamagui/react-native-web-lite'; import { CheckCircle2, Circle, ChevronDown, ChevronUp } from 'lucide-react'; import { Separator } from 'tamagui'; import { useAdminTheme } from '../theme'; import { ReadinessStep } from '../hooks/useEventReadiness'; import { adminPath } from '../../constants'; import { PillBadge } from './Primitives'; export function SetupChecklist({ steps, title, variant = 'card', }: { steps: ReadinessStep[]; title: string; variant?: 'card' | 'embedded'; }) { const theme = useAdminTheme(); const navigate = useNavigate(); const isAllComplete = steps.every(s => s.isComplete); const [collapsed, setCollapsed] = React.useState(isAllComplete); const isEmbedded = variant === 'embedded'; const completedCount = steps.filter(s => s.isComplete).length; return ( setCollapsed(!collapsed)}> {title} {isAllComplete && ( )} {completedCount}/{steps.length} {collapsed ? : } {!collapsed && ( {steps.map((step, index) => { const isNext = !step.isComplete && steps.slice(0, index).every(s => s.isComplete); return ( navigate(adminPath(step.targetPath))} title={ {step.isComplete ? ( ) : isNext ? ( ) : ( )} {step.label} } subTitle={ step.description && !step.isComplete ? ( {step.description} ) : undefined } iconAfter={isNext ? Start : undefined} /> ); })} )} ); }