import React, { useState } from "react"; import { useNavigate } from "react-router-dom"; import { Terminal, Monitor, Network, Container, Database, Server, HardDrive, BarChart3, } from "lucide-react"; import { Card, CardContent, Button, Input, Label, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, } from "@/components/ui"; import { DOMAINS } from "@/lib/domainPrompts"; import { createIssueCmd } from "@/lib/tauriCommands"; import { useSessionStore } from "@/stores/sessionStore"; const iconMap: Record = { Terminal, Monitor, Network, Container, Database, Server, HardDrive, BarChart3, }; export default function NewIssue() { const navigate = useNavigate(); const startSession = useSessionStore((s) => s.startSession); const [selectedDomain, setSelectedDomain] = useState(null); const [title, setTitle] = useState(""); const [severity, setSeverity] = useState("P3"); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(null); const handleStartTriage = async () => { if (!selectedDomain || !title.trim()) return; setIsSubmitting(true); setError(null); try { const issue = await createIssueCmd({ title: title.trim(), domain: selectedDomain, severity }); startSession(issue); navigate(`/issue/${issue.id}/triage`); } catch (err) { setError(String(err)); setIsSubmitting(false); } }; return (

New Issue

Select a domain, describe the issue, and begin triage.

{/* Domain selection grid */}
{DOMAINS.map((domain) => { const Icon = iconMap[domain.icon] ?? Terminal; const isSelected = selectedDomain === domain.id; return ( setSelectedDomain(domain.id)} >

{domain.label}

{domain.description}

); })}
{/* Title */}
setTitle(e.target.value)} placeholder="Brief description of the issue..." />
{/* Severity */}
{/* Error */} {error && (
{error}
)} {/* Submit */}
); }