import { useState, useEffect } from 'react' import { useNavigate } from 'react-router-dom' import api from '@/services/api' import type { Project } from '@/types' const ISSUE_TYPES = [ { value: 'story', label: 'Story', subtypes: ['feature', 'improvement', 'refactor'] }, { value: 'issue', label: 'Issue', subtypes: ['infrastructure', 'performance', 'regression', 'security', 'user_experience', 'defect'] }, { value: 'task', label: 'Task', subtypes: ['defect'] }, { value: 'test', label: 'Test', subtypes: ['regression', 'security', 'smoke', 'stress'] }, { value: 'maintenance', label: 'Maintenance', subtypes: ['deploy', 'release'] }, { value: 'research', label: 'Research', subtypes: [] }, { value: 'review', label: 'Review', subtypes: ['code_review', 'decision_review', 'function_review'] }, { value: 'support', label: 'Support', subtypes: ['access', 'information'] }, { value: 'meeting', label: 'Meeting', subtypes: ['conference', 'handover', 'recap'] }, { value: 'resolution', label: 'Resolution', subtypes: [] }, ] export default function CreateIssuePage() { const navigate = useNavigate() const [projects, setProjects] = useState([]) const [form, setForm] = useState({ title: '', description: '', project_id: 0, issue_type: 'issue', issue_subtype: '', priority: 'medium', tags: '', reporter_id: 1, }) useEffect(() => { api.get('/projects').then(({ data }) => { setProjects(data) if (data.length) setForm((f) => ({ ...f, project_id: data[0].id })) }) }, []) const currentType = ISSUE_TYPES.find(t => t.value === form.issue_type) || ISSUE_TYPES[1] const subtypes = currentType.subtypes || [] const handleTypeChange = (newType: string) => { setForm(f => ({ ...f, issue_type: newType, issue_subtype: '' })) } const submit = async (e: React.FormEvent) => { e.preventDefault() const payload: any = { ...form, tags: form.tags || null } if (!form.issue_subtype) delete payload.issue_subtype await api.post('/issues', payload) navigate('/issues') } return (

Create Issue