'use client'; import { CheckIcon, ChevronsUpDownIcon } from 'lucide-react'; import * as React from 'react'; import zod from 'zod/v4'; import { Button } from '@/components/ui/button'; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from '@/components/ui/command'; import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover'; import { cn } from '@/lib/utils'; import { PublicUserSchema } from '@/app/api/user/validation'; import { useGetApiSearchUser } from '@/generated/api/search/search'; type User = zod.output; export function UserSearchInput({ addUserAction, removeUserAction, selectedUsers, }: { addUserAction: (user: User) => void; removeUserAction: (user: User) => void; selectedUsers: User[]; }) { const [userSearch, setUserSearch] = React.useState(''); const [open, setOpen] = React.useState(false); const { data: searchUserData } = useGetApiSearchUser({ query: userSearch }); return ( No users found. {searchUserData?.data.users?.map((user) => { const isSelected = selectedUsers.some((u) => u.id === user.id); return ( { if (isSelected) { removeUserAction(user); } else { addUserAction(user); } setOpen(false); }} > {user.name} ); })} ); }