import { useState } from 'react' import { Link, useNavigate } from 'react-router-dom' import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import { getEntities, createEntity, deleteEntity, VirtualEntityCreateDto, } from '../api/entitiesApi' export default function EntitiesPage() { const navigate = useNavigate() const queryClient = useQueryClient() const { data: entities = [] } = useQuery({ queryKey: ['entities'], queryFn: getEntities }) const [dialogOpen, setDialogOpen] = useState(false) const [form, setForm] = useState({ name: '', email: '', jobTitle: '', personality: '', scheduleCron: '', contextWindowDays: 3, }) const createMutation = useMutation({ mutationFn: createEntity, onSuccess: (createdEntity) => { queryClient.invalidateQueries({ queryKey: ['entities'] }) setDialogOpen(false) setForm({ name: '', email: '', jobTitle: '', personality: '', scheduleCron: '', contextWindowDays: 3 }) navigate(`/entities/${createdEntity.id}`) }, }) const deleteMutation = useMutation({ mutationFn: (id: string) => deleteEntity(id), onSuccess: () => queryClient.invalidateQueries({ queryKey: ['entities'] }), }) return (

Virtual Entities

{dialogOpen && (

New Entity

{ e.preventDefault() createMutation.mutate(form) }} className="space-y-3" > setForm({ ...form, name: e.target.value })} className="block w-full rounded border border-slate-700 bg-slate-900 px-3 py-2 text-sm text-slate-100" required /> setForm({ ...form, email: e.target.value })} className="block w-full rounded border border-slate-700 bg-slate-900 px-3 py-2 text-sm text-slate-100" required /> setForm({ ...form, jobTitle: e.target.value })} className="block w-full rounded border border-slate-700 bg-slate-900 px-3 py-2 text-sm text-slate-100" required />