diff --git a/client/src/components/ProjectTemplate.tsx b/client/src/components/ProjectTemplate.tsx index 8a01f76..963b7c3 100644 --- a/client/src/components/ProjectTemplate.tsx +++ b/client/src/components/ProjectTemplate.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import { Card } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; @@ -7,8 +7,12 @@ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Calendar } from '@/components/ui/calendar'; import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; -import { Plus, Calendar as CalendarIcon, Clock, Copy, Play } from 'lucide-react'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { Plus, Calendar as CalendarIcon, Clock, Copy, Play, Tag, Edit, Trash2, Palette } from 'lucide-react'; import { Task } from './TaskCard'; +import { Label } from '@shared/schema'; +import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; +import { apiRequest } from '@/lib/queryClient'; interface TemplateTask { id: string; @@ -74,6 +78,53 @@ export default function ProjectTemplate({ const [isCreateOpen, setIsCreateOpen] = useState(false); const [isLaunchOpen, setIsLaunchOpen] = useState(false); const [isCalendarOpen, setIsCalendarOpen] = useState(false); + + // Label management state + const [isLabelDialogOpen, setIsLabelDialogOpen] = useState(false); + const [editingLabel, setEditingLabel] = useState