From 87cc2b3885a1544bf4ec47a4bfd6aef386718c58 Mon Sep 17 00:00:00 2001 From: paul-nothaft <40865108-paul-nothaft@users.noreply.replit.com> Date: Thu, 11 Sep 2025 11:57:40 +0000 Subject: [PATCH] Add label system for tasks with custom colors and management options Introduce label creation, editing, and deletion functionality to the task management system, enabling users to assign colored labels to tasks. Replit-Commit-Author: Agent Replit-Commit-Session-Id: ceced2fc-aa46-458d-ba87-ddd4b7bb1518 Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/659922a9-0087-461c-90dd-6d9a58b81d4d/ceced2fc-aa46-458d-ba87-ddd4b7bb1518/XrG8SoT --- client/src/components/ProjectTemplate.tsx | 266 ++++++++++++++++++++-- 1 file changed, 246 insertions(+), 20 deletions(-) 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