Loading...
;
+ }
+
+ return (
+
+
+
Dashboard
+
+ Overview of your AWS cost simulation scenarios
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* Add CostChart component here */}
+
+
+ );
+}
+```
+
+### Criteri di accettazione
+- [ ] Stat cards con dati reali
+- [ ] Loading states
+- [ ] Lista scenari recenti
+- [ ] Layout responsive
+
+---
+
+## FE-006: Scenarios List Page
+**Stima:** L (2-4 ore)
+**Dipende da:** FE-005
+
+### Obiettivo
+Pagina lista scenari con filtri, pagination e azioni.
+
+### Files da creare
+```
+frontend/src/pages/ScenariosPage.tsx
+frontend/src/components/scenarios/
+βββ ScenarioTable.tsx
+βββ ScenarioFilters.tsx
+βββ CreateScenarioDialog.tsx
+βββ DeleteScenarioDialog.tsx
+```
+
+### Implementazione richiesta
+
+**1. `frontend/src/components/scenarios/ScenarioTable.tsx`:**
+```typescript
+import { useState } from 'react';
+import { useNavigate } from 'react-router-dom';
+import {
+ Table,
+ TableBody,
+ TableCell,
+ TableHead,
+ TableHeader,
+ TableRow,
+} from '@/components/ui/table';
+import { Button } from '@/components/ui/button';
+import { Badge } from '@/components/ui/badge';
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from '@/components/ui/dropdown-menu';
+import { MoreHorizontal, Play, Square, Archive, Trash2 } from 'lucide-react';
+import type { Scenario } from '@/types/api';
+
+interface ScenarioTableProps {
+ scenarios: Scenario[];
+ onStart: (id: string) => void;
+ onStop: (id: string) => void;
+ onArchive: (id: string) => void;
+ onDelete: (id: string) => void;
+}
+
+const statusColors = {
+ draft: 'secondary',
+ running: 'default',
+ completed: 'outline',
+ archived: 'destructive',
+} as const;
+
+export function ScenarioTable({
+ scenarios,
+ onStart,
+ onStop,
+ onArchive,
+ onDelete,
+}: ScenarioTableProps) {
+ const navigate = useNavigate();
+
+ return (
+