import React from 'react';
import { useNavigate } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { Card } from '@tamagui/card';
import { YGroup } from '@tamagui/group';
import { ListItem } from '@tamagui/list-item';
import { Progress } from '@tamagui/progress';
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' | 'inline';
}) {
const theme = useAdminTheme();
const { t } = useTranslation('dashboard');
const navigate = useNavigate();
const isAllComplete = steps.every(s => s.isComplete);
const [collapsed, setCollapsed] = React.useState(true);
const isInline = variant === 'inline';
const completedCount = steps.filter(s => s.isComplete).length;
const totalSteps = steps.length;
const progressValue = totalSteps > 0 ? Math.round((completedCount / totalSteps) * 100) : 0;
const content = (
setCollapsed(!collapsed)}>
{title}
{isAllComplete ? (
) : (
{t('readiness.pending', 'Noch offen')}
)}
{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}
/>
);
})}
)}
);
if (isInline) {
return content;
}
return (
{content}
);
}