"use client" import * as React from "react" import { ArrowUpIcon, CheckIcon, PlusIcon } from "lucide-react" import { cn } from "@/lib/utils" import { Avatar, AvatarFallback, AvatarImage, } from "@/registry/new-york-v4/ui/avatar" import { Button } from "@/registry/new-york-v4/ui/button" import { Card, CardContent, CardFooter, CardHeader, } from "@/registry/new-york-v4/ui/card" import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@/registry/new-york-v4/ui/command" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/registry/new-york-v4/ui/dialog" import { Input } from "@/registry/new-york-v4/ui/input" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/registry/new-york-v4/ui/tooltip" const users = [ { name: "Olivia Martin", email: "m@example.com", avatar: "/avatars/01.png", }, { name: "Isabella Nguyen", email: "isabella.nguyen@email.com", avatar: "/avatars/03.png", }, { name: "Emma Wilson", email: "emma@example.com", avatar: "/avatars/05.png", }, { name: "Jackson Lee", email: "lee@example.com", avatar: "/avatars/02.png", }, { name: "William Kim", email: "will@email.com", avatar: "/avatars/04.png", }, ] as const type User = (typeof users)[number] export function CardsChat() { const [open, setOpen] = React.useState(false) const [selectedUsers, setSelectedUsers] = React.useState([]) const [messages, setMessages] = React.useState([ { role: "agent", content: "Hi, how can I help you today?", }, { role: "user", content: "Hey, I'm having trouble with my account.", }, { role: "agent", content: "What seems to be the problem?", }, { role: "user", content: "I can't log in.", }, ]) const [input, setInput] = React.useState("") const inputLength = input.trim().length return ( <>
S

Sofia Davis

m@example.com

New message
{messages.map((message, index) => (
{message.content}
))}
{ event.preventDefault() if (inputLength === 0) return setMessages([ ...messages, { role: "user", content: input, }, ]) setInput("") }} className="relative w-full" > setInput(event.target.value)} />
New message Invite a user to this thread. This will create a new group message. No users found. {users.map((user) => ( { if (selectedUsers.includes(user)) { return setSelectedUsers( selectedUsers.filter( (selectedUser) => selectedUser !== user ) ) } return setSelectedUsers( [...users].filter((u) => [...selectedUsers, user].includes(u) ) ) }} > {user.name[0]}

{user.name}

{user.email}

{selectedUsers.includes(user) ? ( ) : null}
))}
{selectedUsers.length > 0 ? (
{selectedUsers.map((user) => ( {user.name[0]} ))}
) : (

Select users to add to this thread.

)}
) }