"use client"; import type { Group, Service } from "@/lib/api/schema"; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { Separator } from "@/components/ui/separator"; import { ServiceCard } from "@/components/services/service-card"; import { ChevronDown, MoreVertical, Pencil, Trash2, FolderOpen } from "lucide-react"; import { useUpdateGroup, useDeleteGroup } from "@/lib/api/hooks"; import { cn } from "@/lib/utils"; import { useState } from "react"; interface GroupSectionProps { group: Group; onEditService: (s: Service) => void; onDeleteService: (id: string) => void; onEditGroup: (g: Group) => void; } export function GroupSection({ group, onEditService, onDeleteService, onEditGroup }: GroupSectionProps) { const updateGroup = useUpdateGroup(); const deleteGroup = useDeleteGroup(); const [open, setOpen] = useState(!group.collapsed); const handleToggle = () => { const next = !open; setOpen(next); updateGroup.mutate({ id: group.id, collapsed: !next }); }; const handleDelete = () => { if (group.services.length > 0) { deleteGroup.mutate({ id: group.id, moveServices: true }); } else { deleteGroup.mutate({ id: group.id }); } }; return ( {/* Group header */}
onEditGroup(group)} className="gap-2 text-xs"> Rename Delete
{/* Services grid */}
{group.services.map((s) => ( ))}
); }