'use client';
import {
CheckCircleIcon,
CircleIcon,
ClockIcon,
EyeIcon,
PlayIcon,
XCircleIcon,
} from 'lucide-react';
import { Badge } from '@kit/ui/badge';
import { Card, CardContent, CardHeader, CardTitle } from '@kit/ui/card';
import { Separator } from '@kit/ui/separator';
import { cn } from '@kit/ui/utils';
interface CustomPhase {
id: string;
name: string;
description: string;
color: string;
order: number;
userStoryIds: string[];
}
interface UserStory {
id: string;
title: string;
userStory: string;
businessValue: string;
acceptanceCriteria: string[];
priority: 'P0' | 'P1' | 'P2' | 'P3';
status:
| 'not_started'
| 'research'
| 'in_progress'
| 'review'
| 'completed'
| 'blocked';
notes?: string;
estimatedComplexity?: string;
dependencies?: string[];
completedAt?: string;
}
interface UserStoryDisplayReadOnlyProps {
userStories: UserStory[];
customPhases?: CustomPhase[];
}
const priorityLabels = {
P0: { label: 'Critical', color: 'destructive' as const },
P1: { label: 'High', color: 'default' as const },
P2: { label: 'Medium', color: 'secondary' as const },
P3: { label: 'Low', color: 'outline' as const },
};
const statusIcons = {
not_started: CircleIcon,
research: EyeIcon,
in_progress: PlayIcon,
review: ClockIcon,
completed: CheckCircleIcon,
blocked: XCircleIcon,
};
const statusLabels = {
not_started: 'Not Started',
research: 'Research',
in_progress: 'In Progress',
review: 'Review',
completed: 'Completed',
blocked: 'Blocked',
};
const statusColors = {
not_started: 'text-muted-foreground',
research: 'text-blue-600',
in_progress: 'text-yellow-600',
review: 'text-purple-600',
completed: 'text-green-600',
blocked: 'text-red-600',
};
export function UserStoryDisplay({
userStories,
}: UserStoryDisplayReadOnlyProps) {
const renderUserStory = (story: UserStory) => {
return (
{story.businessValue}
Acceptance Criteria:
{story.acceptanceCriteria.map((criterion, index) => (
View user stories and track progress
No user stories yet